• log4j笔记


    log4j笔记

    log4j

    log4j是一个用Java编写的可靠,快速和灵活的日志框架(API),它在Apache软件许可下发布。

    log4j安装

           使用maven安装,在pom.xml的dependencies节点直接添加以下依赖,即可使用

    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
        <groupId>log4j</groupId>
        <artifactId>log4j</artifactId>
        <version>1.2.17</version>
    </dependency>

    log4j配置

          可以在类目录下建立一个资源文件夹,如src/main/resources目录下,新建log4j.properties配置文件,如

     
    log4j.rootLogger=DEBUG,FILE
    #file
    log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender 
    log4j.appender.FILE.DatePattern='.'yyyy-MM-dd
    log4j.appender.FILE.File=./src/logs/out.log
    log4j.appender.FILE.Append=true
    log4j.appender.FILE.Threshold=DEBUG
    log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
    log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ] %p:%m%n
     

    1. log4j.rootLogger=DEBUG,FILE

        首先,级别优先级是ALL < DEBUG < INFO < WARN < ERROR < FATAL < OFF。

        这里根的日志级别设置DEBUG级别,用来控制下面所有appender节点的日志级别。这里设置了DEBUG,则表示大于等于DEBUG级别的日志记录才会发送到下面的appender节点处理。

        而第二个参数FILE则是appender节点的名称,另外DEBUG后面可以放多个名称的,如果log4j.rootLogger=DEBUG,FILE,FILE1,FILE2。

    2. log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender

        这里表示FILE是使用org.apache.log4j.DailyRollingFileAppender,而DailyRollingFileAppender是代表日志文件滚动,后一天会把前一天的log文件改名。

     另外还有org.apache.log4j.FileAppender全部写在一个文件中,useorg.apache.log4j.RollingFileAppender表示日志文件滚动,条件是maxFileSize文件大小,默认是大于10m就分开下一个文件写日志,

    3. log4j.appender.FILE.DatePattern='.'yyyy-MM-dd,表示一天滚动一次。下面是列表

        

    DatePattern描述
    '.' yyyy-MM 滚动在每个月的结束和下一个月初
    '.' yyyy-MM-dd 这是默认值,每天午夜滚动
    '.' yyyy-MM-dd-a 滚动每一天的午夜和中午
    '.' yyyy-MM-dd-HH 滚动在每一个小时
    '.' yyyy-MM-dd-HH-mm 滚动在每一个分钟
    '.' yyyy-ww 滚动每个星期取决于区域设置时的第一天

    4. log4j.appender.FILE.File=./src/logs/out.log

       这里参数表示日志文件存放路径

    5.log4j.appender.FILE.Append=true

       表示是否添加到日志文件末尾,如果为false且存在日志文件,就不写入,坑。

    6.log4j.appender.FILE.Threshold=DEBUG

      表示可以写入的日志级别,根节点的级别优先

    7. log4j.appender.FILE.layout=org.apache.log4j.PatternLayout

       表示使用模式格式写日志,另外还有HTMLLayout,XMLLayout,DateLayout等格式。

    8.log4j.appender.FILE.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss a} [Thread: %t][ Class:%c >> Method: %l ] %p:%m%n

     日志写入的实际内容,里面的占位符含义如下

    转换字符表示的意思
    c 用于输出的记录事件的类别。例如,对于类别名称"a.b.c" 模式  %c{2} 会输出 "b.c"
    C 用于输出呼叫者发出日志请求的完全限定类名。例如,对于类名 "org.apache.xyz.SomeClass", 模式 %C{1} 会输出 "SomeClass".
    d 用于输出的记录事件的日期。例如, %d{HH:mm:ss,SSS} 或 %d{dd MMM yyyy HH:mm:ss,SSS}.
    F 用于输出被发出日志记录请求,其中的文件名
    l 用于将产生的日志事件调用者输出位置信息
    L 用于输出从被发出日志记录请求的行号
    m 用于输出使用日志事件相关联的应用程序提供的消息
    M 用于输出发出日志请求所在的方法名称
    n 输出平台相关的行分隔符或文字
    p 用于输出的记录事件的优先级
    r 用于输出毫秒从布局的结构经过直到创建日志记录事件的数目
    t 用于输出生成的日志记录事件的线程的名称
    x 用于与产生该日志事件的线程相关联输出的NDC(嵌套诊断上下文)
    X 在X转换字符后面是键为的MDC。例如  X{clientIP} 将打印存储在MDC对键clientIP的信息
    % 文字百分号 %%将打印%标志

    slf4j

           slf4j是门面模式的典型应用,所以slf4j的作用是提供标准统一的API,而不是具体实现,好处就是更换日志框架不需要修改代码,只需要改maven的引用包。阿里巴巴开发规约里面也强制规定了,

    【强制】应用中不可直接使用日志系统(Log4j、Logback)中的API,而应依赖使用日志框架(SLF4J、JCL--Jakarta Commons Logging)中的API。

           slf4j-simple、logback都是slf4j的具体实现,log4j并不直接实现slf4j,但是有专门的一层桥接slf4j-log4j12来实现slf4j。所以我们如果使用log4j的话,只需要在pom.xml下面添加

    <dependency>
          <groupId>org.slf4j</groupId>
          <artifactId>slf4j-log4j12</artifactId>
          <version>1.8.0-alpha2</version>
        </dependency>

       使用方式

        private final static org.slf4j.Logger logger = LoggerFactory.getLogger(App.class);
    
        public static void main(String[] args) {
            loggers.debug("debug");
       }
  • 相关阅读:
    二分图匹配(匈牙利算法)
    最长共公子序列(LCS)
    网页常用Js代码
    linux 服务器常用命令整理
    阿里云学生服务器搭建网站-Ubuntu16.04安装php开发环境
    BAT批处理中的字符串处理详解(字符串截取)
    DOS批处理高级教程(还不错)(转)
    EntityFramework的linq扩展where
    RestSharp发送请求得到Json数据
    socket
  • 原文地址:https://www.cnblogs.com/TestMa/p/10653798.html
Copyright © 2020-2023  润新知