zoukankan      html  css  js  c++  java
  • 使用 log4j 2记录日志

    log4j2使用方法还是很简单的

    1 需要使用的jar包有两个,

    1)log4j-api-2.8.2.jar

    2)log4j-core-2.8.2.jar

    2 产生Logger 对象非常的简单,使用 LogManager.getLogger(name) 方法可以获取指定名称的 logger对象。其中 name 是在配置文件中的 logger。配置文件可以是多种的一般使用properties文件或者xml文件,配置文件放在classpath 指定的目录中,因为该组件默认回去classpath路径中查找 log4j2.xml文件或log4j2.properties或log4j2.jsn等。详情请查看官网

    我们放到src/目录下即可。

    3 配置文件,主要就是配置Loggers 和Appenders。Logger就是配置logger对象, Appender就是说明在哪输出信息。简单例子如下

    <?xml version="1.0" encoding="UTF-8"?>  
    <Configuration status="warn" monitorInterval="600">
        <Appenders>
            <Console name="Console" target="SYSTEM_OUT">
                <PatternLayout pattern="%d [%t] %-5level %logger{36} %msg%n" />  
            </Console>
            <RollingFile name="RollingFile" fileName="logs/mylog.log" filePattern="logs/$${date:yyyy-MM}/mylog-%d{MM-dd-HH-mm}-%i.log.gz">
              <PatternLayout>
                <Pattern>%d %-5level %c{1.} [%t] %m%n</Pattern>
              </PatternLayout>
              <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>
                <SizeBasedTriggeringPolicy size="250 MB"/>
              </Policies>
            </RollingFile>
        </Appenders>
        <Loggers>
            <Root level="error">
                <AppenderRef ref="Console" />
            </Root>
            <Logger name="mylog" level="warn" additivity="false">
                <AppenderRef ref="RollingFile"/>
            </Logger>
        </Loggers>
    </Configuration> 

    关键字说明,详细说明请查看官网

    1)monitorInterval:会自动加载配置文件的时间间隔,单位是秒

    PatternLayout 中的格式说明

    2)%d:输出日期,默认格式,例如:2012-11-02 14:34:02,781

    3)%t: 输出当前线程名称

    4)%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符

    5)%logger 或 %c  输出logger名称,因为Root Logger没有名称,所以没有输出

    6)%msg 日志文本

    7)%n 换行

    在设置日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。对于Loggers中level的定义同样适用。

    简单代码如下:

    import org.apache.logging.log4j.LogManager;
    import org.apache.logging.log4j.Logger;
    
    import org.junit.Test;
    
    public class MyLogger {
        private Logger myLogger = LogManager.getLogger("mylog");
        
        @Test
        public void fun1(){
            for(int i=0;i<10;i++){
                myLogger.trace("trace message");
                myLogger.info("info message");
                myLogger.debug("debug message");
                myLogger.warn("warn message");
                myLogger.error("error message");
                myLogger.fatal("fatal message");
                
                try {
                    Thread.sleep(1000*30);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    myLogger.error(e);
                }
            
            }
            
        }
        
        public static void main(String[] args) {
            new MyLogger().fun1();
        }
    
    }
  • 相关阅读:
    采集智能电表
    未能写入输出文件“c:\WINDOWS\Microsoft.NET\Framework\.....dll”“拒绝访问。
    随笔写写jquery
    随便写写,,
    写写Ajaxpro
    C# 给程序加日志功能。
    Oracle_Database_11g_标准版_企业版__下载地址_详细列表
    通过C#发送自定义的html格式邮件
    C# 加密解密链接字符串
    获取本地 有线 正在使用的网卡信息
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/6694248.html
Copyright © 2011-2022 走看看