log4j2基础⼊门(超详细)
⼀.导包
 (2)将下载的.zip(windows中)加压,并将
1.    log4j-api-×××.jar
2.   log4j-core-×××.jar
    导⼊项⽬中,并BuildPath
⼆.调⽤
  (1)log4j的级别
    log4j规定了默认的⼏个级别:all<trace<debug<info<warn<error<fatal<off  (off是最⾼等级,即关闭所有⽇志记录;all是最低等级,即打开所有⽇志记录)
Level描述
ALL各级包括⾃定义级别
DEBUG指定细粒度信息事件是最有⽤的应⽤程序调试
ERROR错误事件可能仍然允许应⽤程序继续运⾏
FATAL指定⾮常严重的错误事件,这可能导致应⽤程序中⽌
INFO指定能够突出在粗粒度级别的应⽤程序运⾏情况的信息的消息
OFF这是最⾼等级,为了关闭⽇志记录
TRACE指定细粒度⽐DEBUG更低的信息事件
WARN指定具有潜在危害的情况
  (2)log4j测试
    导包后测试⼀下log4j。
    代码如下:   
public class Log4jTest {
private static Logger logger = Logger(Name());
public static void main(String[] args) {
logger.debug("我是debug信息");
logger.info("我是info信息");
logger.warn("我是warning信息");
<("我是error信息");
logger.fatal("我是fatal信息");
}
}
    输出信息:
ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. Set system property 'log4j2.debug' to show Log4j2 internal initialization logging. 09:48:26.531 [main] ERROR st.Log4jTest - 我是error信息
09:48:26.533 [main] FATAL st.Log4jTest - 我是fatal信息
  结果只输出了error和fatal的信息,并且给出了原因,原因就是:没有到log4j2的配置⽂件,便使⽤了默认的配置,仅仅显⽰error及以上级别的⽇志。那么,我们便需要创建⼀个配置⽂件,并且log4j2默认会在classpath⽬录下寻log4j.json、log4j.jsn、l等名称的⽂件
  在src下创建l⽂件
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"></PatternLayout>
</Console>
</Appenders>
<Loggers>
<Root level="error">//此处级别
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>
  再次运⾏,显⽰:
10:15:17.001 [main] ERROR st.Log4jTest - 我是error信息
10:15:17.004 [main] FATAL st.Log4jTest - 我是fatal信息
  没有了第⼀⾏的没有到配置⽂件的信息,说明配置⽂件已经到,但是还是只显⽰error和fatal的输出信息,那是因为配置⽂件中的level设置的是error---和默认配置中的⼀样,现在改成trace则我们写的代码中要输出的⽇志信息全部打印出来:
10:18:37.898 [main] TRACE st.Log4jTest - entry
10:18:37.901 [main] DEBUG st.Log4jTest - 我是debug信息
10:18:37.901 [main] INFO  st.Log4jTest - 我是info信息
10:18:37.901 [main] WARN  st.Log4jTest - 我是warning信息
10:18:37.901 [main] ERROR st.Log4jTest - 我是error信息
10:18:37.901 [main] FATAL st.Log4jTest - 我是fatal信息
10:18:37.901 [main] TRACE st.Log4jTest - exit
  另,对l的PatternLayout 节点中的pattern属性的解释如下:
  %d{HH:mm:ss.SSS} 表⽰输出到毫秒的时间(.SSS即是毫秒)
  %t 输出当前线程名称
  %-5level 输出⽇志级别,-5表⽰左对齐并且固定输出5个字符,如果不⾜在右边补空格
  %logger 输出logger名称,因为Root Logger没有名称,所以没有输出
  %msg ⽇志⽂本
  %n 换⾏
  其他常⽤的占位符有:
  %F 输出所在的类⽂件名,如Client.java
  %L 输出⾏号
  %M 输出所在⽅法名
  %l  输出语句所在的⾏数, 包括类名、⽅法名、⽂件名、⾏数
  (3)⾃定义Appender及logger
1.log4j
    添加以后l代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"></PatternLayout>
</Console>
<File name="myFile" fileName="./mylog.log">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"></PatternLayout>
</File>
</Appenders>
<Loggers>
<logger name="mylogger" level="info" additivity="false">
<AppenderRef ref="Console"/>
</logger>
<Root level="trace">
<AppenderRef ref="myFile"/>
</Root>
</Loggers>
</Configuration>
      在测试类中测试新的logger
public class Log4jTest {
private static Logger myLogger = Logger("myLogger");//此处mylogger即为xml⽂件中的mylogger
public static void main(String[] args) {
log4j2 deletemyLogger.debug("我是debug信息");
myLogger.info("我是info信息");
myLogger.warn("我是warning信息");
<("我是error信息");
myLogger.fatal("我是fatal信息");
}
}
  由于myFile中的fileName设置的路径为当前⽬录下,查看项⽬所在⽂件夹,发现已经⾃动创建了⼀个mylog⽂件并写⼊了log信息

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。