Java——Log4j与Log4j2

摘要:
有许多技术用于日志记录,如jdk的logger技术、apache的log4j、log4j2技术等。log4j的全称是Logforjava,即一种专用于Java语言的日志记录工具。它目前有两个版本:Log4j和Log4j2。Log4j使用基本的导入Jar包,包括Log4j与Log4j2Log4j:Log4j2:日志级别从高到低。有六个级别:致命、错误、警告、信息、调试跟踪(堆栈)Log4j代码:Log4j。属性配置文件1##definenappendernamedconsole2log4j。附加程序。console=组织。阿帕奇。log4j。ConsoleAppender3#目标值为System。outerSystem。错误4log4j。附加程序。安慰目标=系统。err5#设置layouttypeoffheader6log4j。附加程序。安慰layout=组织。阿帕奇。log4j。PatternLayout7#设置layoutformatpattern8log4j。应用程序端。安慰布局ConversionPattern=[%-5p][%d{yyyy MM ddHH:MM:ss}]%c%L%m%n91011##definenappendernamedfile12log4j.appender.file=org.apache.log4j.FileAppender13#definenapelpathandname14log4j.appender.file.file=/home/wber/log.txt15#setthelayouttypeofappender16log4j.appander.file.layout=org.apache/log4j.PatternLayout17#setthelayout formatpattern18log4j.appender.file输出。转换模式=[%-5p][%d{yyyy MM ddHH:MM:ss}]%c%L%m%n192021##definenappendernamedrollfile22log4j.appender.rollfile=org.apache.log4j.RollingFileAppender23#definenapelpathandname24log4j.appender.rollfile.File=d:/logrolfile.txt25#setthelog'ssize26log4j.appander.rollfile.MaxFileSize=10KB27#setthelayouttypeofappender28log4j.appender.rrollfile.layout=org.apache/log4j.PatternLayout29#setthellayoutformatpattern30log4j.lapender.r ollfile.layout。ConversionPattern=[%-5p][%d{yyyy MM ddHH:MM:ss}]%c%L%m%n313233##定义记录器34log4j.rootLogger=调试、控制台、文件、卷文件!!!

完整的软件,日志是必不可少的。程序从开发、测试、维护、运行等环节,都需要向控制台或文件等位置输出大量信息。这些信息的输出,在很多时候是System.out.println()无法完成日志信息根据用途与记录内容的不同,分为调试日志、运行日志、异常日志等。用于日志记录的技术很多,如 jdk 的 logger 技术,apache 的 log4j、log4j2 技术等。Log4j 的全称为 Log for java,即,专门用于 java 语言的日志记录工具。其目前有两个版本:Log4j 与 Log4j2。

下载地址 : http://download.csdn.net/download/zedtorpex/10267173


  日志级别
  为了方便对于日志信息的输出显示,对日志内容进行了分级管理。日志级别由高到低 ,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)。为什么要对日志进行分级呢?无论是将日志输出到控制台,还是文件,其输出都会降低程序的运行效率。但由于调试、运行维护的需要,客户的要求等原因,需要进行必要的日志输出。这时就必须要在代码中加入日志输出语句。这些输出语句若在程序运行时全部执行,则势必会降低运行效率。例如,使用System.out.println()将信息输出到控制台,则所有的该输出语句均将执行。会大大降低程序的执行效率。而要使其不输出,唯一的办法就是将这些输出语句逐个全部删除。这是个费时费力的过程。将日志信息进行分级管理,便可方便的控制信息输出内容及输出位置:哪些信息需要输出,哪些信息不需要输出,只需在一个日志输出控制文件中稍加修改即可。而代码中的输出语句不用做任何修改。从这个角度来说,代码中的日志编写,其实就是写大量的输出语句。只不过,这些输出语句比较特殊,它们具有级别,在程序运行期间不一定被执行。它们的执行是由另一个控制文件控制。

  日志输出控制文件

   Log4j 的日志输出控制文件,主要由三个部分构成:

  (1)日志信息的输出位置:控制日志信息将要输出的位置,是控制台还是文件等。

  (2)日志信息的输出格式:控制日志信息的显示格式,即以怎样的字符串形式显示。

  (3)日志信息的输出级别:控制日志信息的显示内容,即显示哪些级别的日志信息。有了日志输出控制文件,代码中只要设置好日志信息内容及其级别即可,通过控制文件便可控制这些日志信息的输出了。

 Log4 j 使用基础

  导入Jar包,分别有Log4j 与Log4j2 两种.

  Log4j  :

      Java——Log4j与Log4j2第1张

  Log4j 2 : 

      Java——Log4j与Log4j2第2张

    日志级别由高到低 ,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)

  Log4j 代码:

    Java——Log4j与Log4j2第3张

        log4j.properties配置文件

 1 ##define an appender named console
 2 log4j.appender.console=org.apache.log4j.ConsoleAppender
 3 #The Target value is System.out or System.err
 4 log4j.appender.console.Target=System.err
 5 #set the layout type of the apperder
 6 log4j.appender.console.layout=org.apache.log4j.PatternLayout
 7 #set the layout format pattern
 8 log4j.appender.console.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %c %L %m%n
 9 
10 
11 ##define an appender named file
12 log4j.appender.file=org.apache.log4j.FileAppender
13 #define the file path and name
14 log4j.appender.file.File=/home/wber/log.txt
15 #set the layout type of the apperder
16 log4j.appender.file.layout=org.apache.log4j.PatternLayout
17 #set the layout format pattern
18 log4j.appender.file.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %c %L %m%n
19 
20 
21 ##define an appender named rollfile
22 log4j.appender.rollfile=org.apache.log4j.RollingFileAppender
23 #define the file path and name
24 log4j.appender.rollfile.File=d:/logrollfile.txt
25 #set the log's size
26 log4j.appender.rollfile.MaxFileSize=10KB
27 #set the layout type of the apperder
28 log4j.appender.rollfile.layout=org.apache.log4j.PatternLayout
29 #set the layout format pattern
30 log4j.appender.rollfile.layout.ConversionPattern=[%-5p][%d{yyyy-MM-dd HH:mm:ss}] %c %L %m%n
31 
32 
33 ##define a logger
34 log4j.rootLogger=debug,console,file,rollfile 
  !!! log4j.appender.file.File=/home/wber/log.txt为输出日志文件路径
 1 package com.log.myDemo;
 2 
 3 import org.apache.log4j.Logger;
 4 
 5 public class LogDemo {
 6     public static void main(String []args){
 7         Logger logger = Logger.getLogger(LogDemo.class) ;
 8         //日志级别由高到低 ,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)
 9         logger.fatal("fatal msg");
10         logger.error("error msg");
11         logger.warn("warn msg");
12         logger.info("info msg");
13         logger.debug("debug msg");
14         logger.trace("trace msg");
15     }
16     
17 }
Java——Log4j与Log4j2第4张

Java——Log4j与Log4j2第5张

  Log4j 代码:

    配置文件为log4j2.xml  

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 
 3 <configuration status="OFF">
 4     <appenders>
 5         <Console name="myConsole" target="SYSTEM_OUT">
 6             <PatternLayout pattern="[%-5p][%d{yyyy-MM-dd HH:mm:ss}] [%c %L] %m%n" />
 7         </Console>
 8         <File name="myLogFile" fileName="log/test.log" append="true">
 9             <PatternLayout pattern="[%-5p][%d{yyyy-MM-dd HH:mm:ss}] [%c %L] %m%n"/>
10         </File>
11         <RollingFile name="myRollingFile" fileName="logs/app.log"
12                      filePattern="logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz">
13             <PatternLayout pattern="[%-5p][%d{yyyy-MM-dd HH:mm:ss}] [%c %L] %m%n"/>
14             <SizeBasedTriggeringPolicy size="1KB"/>
15         </RollingFile>
16     </appenders>
17     
18     <loggers>
19         <!-- 
20         <logger name="全限定类名或接口名" level="info">
21             <appender-ref ref="myConsole" />
22         </logger>
23          -->
24         <root level="trace">
25             <appender-ref ref="myConsole" />
26             <!-- <appender-ref ref="myLogFile" />
27             <appender-ref ref="myRollingFile" /> -->
28         </root>
29     </loggers>
30     
31 </configuration>

  main方法改为:

 1     public static void main(String []args){
 2         Logger logger = LogManager.getLogger(LogDemo.class) ;
 3         //日志级别由高到低 ,共分 6 个级别:fatal(致命的)、error、warn、info、debug、trace(堆栈)
 4         logger.fatal("fatal  msg");
 5         logger.error("error msg");
 6         logger.warn("warn msg");
 7         logger.info("info msg");
 8         logger.debug("debug msg");
 9         logger.trace("trace msg");
10     } 

  

免责声明:文章转载自《Java——Log4j与Log4j2》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【java】Freemarker 动态生成word(带图片表格)signal,blinker:信号(看我脸色行事)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

log4j输出日志乱码(转)

log4j日志文件乱码问题的解决方法 log4j日志文件中文乱码处理方法 log4j 控制台和文件输出乱码问题解决 写在前面,第三篇文章中将原因解释的最清楚,为什么设置为UTF-8或者GBK就生效了,原因是类文件的编码和输入日志的编码必须一致,否则就会出现乱码。   转:log4j日志文件乱码问题的解决方法 近日在AIX上用log4j打印日志,出现乱码,...

Python3 日志(内置logging模块)

转载自:https://www.cnblogs.com/Nicholas0707/p/9021672.html 目录 (一)、日志相关概念 1、日志的作用 2、日志的等级 3、日志字段信息与日志格式 4、日志功能的实现 (二)logging模块 1、 logging模块的日志级别 2、logging模块的使用方式介绍 3、第一种使用方式:...

log4j2常见配置

依赖jar: <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.9.1</version>...

Springboot 日志管理配置logback-spring.xml

几种常见的日志 Log4j:是最早的日志框架,是apach旗下的,可以单独使用,也可配合日志框架JCL使用; Log4j2:apach旗下的关于log4j的升级版; Logback:是基于slf4j接口实现的一套日志框架组件;(Logback是由log4j创始人设计的又一个开源日志组件。) JUL(java utillog):仿log4j实现的日志框架,...

C# 使用 log4net 记录日志

Ø  前言 在一般的开发应用中,都会涉及到日志记录,用于排查错误 或 记录程序运行时的日志信息。log4net 库是 Apache log4j框架在 Microsoft .NET 平台的实现,是一个帮助程序员将日志信息输出到各种目标(控制台、文件、数据库等)的组件。 下面介绍下如何在 C# 中如何使用 log4net 记录日志,主要分为以下几点: 1.  ...

log4j异常问题

log4j:WARN No appenders could be found for logger  转自:最爱NBA 直接写我的解决办法:在src下面新建file名为log4j.properties内容如下:# Configure logging for testing: optionally with log filelog4j.rootLogger...