zoukankan      html  css  js  c++  java
  • Log4J的配置

    Log4J简介
    日志记录功能是一个项目中重要的组成部分,Log4J是APache下的一个开源日志组件,为java开发者提供了很大的便利。

    Loggers,日志信息的优先级
    日志信息的优先级从高到低有ERROR、WARN、 INFO、DEBUG,分别用来指定这条日志信息的重要程度,设置为高级别的优先级时,低优先级的日志将不会输出,比如将日志级别设置为INFO,则DEBUG级别的目录不会被记录,为了防止日志输出泛滥,最好不要将日志级别设置太低,一般为INFO即可。

    Appenders,日志信息的输出目的地
    日志信息的输出目的地指定了日志将打印到控制台还是文件中,参数如下:
    org.apache.log4j.ConsoleAppender (控制台)
    org.apache.log4j.FileAppender (文件)
    org.apache.log4j.DailyRollingFileAppender(每天产生一个日志文件,本文中的案例选择的策略)
    org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件,也是一个不错的选择)
    org.apache.log4j.WriterAppender(将日志信息以流格式发送到任意指定的地方)

    Layouts,日志信息的输出格式
    输出格式的功能是控制日志信息的显示内容,参数如下:
    org.apache.log4j.HTMLLayout(以HTML表格形式布局)
    org.apache.log4j.PatternLayout(可以灵活地指定布局模式,本案例所选择的策略,需对日志格式进行设置)
    org.apache.log4j.SimpleLayout(包含日志信息的级别和信息字符串)
    org.apache.log4j.TTCCLayout(包含日志产生的时间、线程、类别等等信息)

    Log4J的输出格式 :

    layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出): 
    %c 输出所属类的全名,可在修改为 %d{Num} ,Num类名输出的维(如:"org.apache.elathen.ClassName",%C{2}将输出elathen.ClassName) 
    %d 输出日志时间其格式为 %d{yyyy-MM-dd HH:mm:ss,SSS},可指定格式 如 %d{HH:mm:ss} 
    %l 输出日志事件发生位置,包括类目名、发生线程,在代码中的行数 
    %n 换行符 
    %m 输出代码指定信息,如info(“message”),输出message 
    %p 输出优先级,即 FATAL ,ERROR 等 
    %r 输出从启动到显示该log信息所耗费的毫秒数 
    %t 输出产生该日志事件的线

     Log4J配置文件 :   

    复制代码
    # 配置根Logger
    # level是指 日志的输出级别 ,优先级从高到低分别是 ERROR 、 WARN 、 INFO 、 DEBUG 。
    # appenderName 就是指日志信息输出到哪个地方。您可以同时指定多个输出目的地。
    log4j.rootLogger  =   [ level ] , appenderName, appenderName, … 
    
    # 定义日志输出目的地
    # appenderName就是指日志输出的目的地,和log4j.rootLogger中的相同。
    log4j.appender.appenderName=org.apache.log4j.DailyRollingFileAppender
    
    # org.apache.log4j.ConsoleAppender (控制台)
    # org.apache.log4j.FileAppender (文件)
    # org.apache.log4j.DailyRollingFileAppender (每天产生一个日志文件)
    # org.apache.log4j.RollingFileAppender (文件大小到达指定尺寸的时候产生一个新的文件)
    # org.apache.log4j.WriterAppender (将日志信息以流格式发送到任意指定的地方)
    
    # 设置文件输出路径  mylog为日志文件的文件名,路径为根目录下的logs文件夹下的mylog.log文件
    log4j.appender.appenderName.file=../logs/mylog.log
    
    # 当天的日志是mylog.log,当天过去之后,mylog.log就会重命名为mylog_yyyy-MM-dd.log ,yyyy-MM-dd为当天的日期
    log4j.appender.appenderName.DatePattern='_'yyyy-MM-dd'.log'
    
    # 配置日志信息的格式(布局)
    log4j.appender.appenderName.layout = org.apache.log4j.PatternLayout  
    
    # org.apache.log4j.HTMLLayout (以 HTML 表格形式布局)
    # org.apache.log4j.PatternLayout (可以灵活地指定布局模式)
    # org.apache.log4j.SimpleLayout (包含日志信息的级别和信息字符串)
    # org.apache.log4j.TTCCLayout (包含日志产生的时间、线程、类别等等信息)
    
    # 日志信息输出格式 
    # [日期] 日志级别  全路径类名 行号 日志信息 
    log4j.appender.appenderName.layout.ConversionPattern=  [%d{yyyy-MM-dd HH:mm:ss}] %-5p %c  %L -%m%n
    
    # layout中的参数都以%开始,后面不同的参数代表不同的格式化信息(参数按字母表顺序列出):
    
    # - X 号 : X 信息输出时左对齐; 
    # %p: 输出日志信息优先级,即 DEBUG , INFO , WARN , ERROR , FATAL,
    # %d: 输出日志时间点的日期或时间,默认格式为 ISO8601 ,也可以在其后指定格式,比如: %d{yyy MMM dd HH:mm:ss,SSS}
    # %r: 输出自应用启动到输出该 log 信息耗费的毫秒数 
    # %c: 输出日志信息所属的类目,通常就是所在类的全名 
    # %t: 输出产生该日志事件的线程名 
    # %l: 输出日志事件的发生位置,相当于 %C.%M(%F:%L) 的组合 , 包括类目名、发生的线程,以及在代码中的行数。举例: Testlog4.main(TestLog4.java:10)
    # %x: 输出和当前线程相关联的 NDC( 嵌套诊断环境 ), 尤其用到像 Java servlets 这样的多客户多线程的应用中。 
    # %%: 输出一个 "%" 字符 
    # %F: 输出日志消息产生时所在的文件名称 
    # %L: 输出代码中的行号 
    # %m: 输出代码中指定的消息 , 产生的日志具体信息 
    # %n: 输出一个回车换行符, Windows 平台为 "/r/n" , Unix 平台为 "/n" 输出日志信息换行 
    
    
    # 设置日志字符集编码格式 
    log4j.appender.appenderName.encoding=utf-8
    
    # 设置日志的输出级别,和log4j.rootLogger里面的相比 取级别高的。
    log4j.appender.appenderName.Threshold = ERROR
    
    # 设置日志文件最大尺寸
    log4j.appender.ROLLING_FILE.MaxFileSize=10MB   



    #ex:

    log4j.rootLogger = ERROR , appenderName , Console

    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout = org.apache.log4j.PatternLayout 
    log4j.appender.Console.layout.ConversionPattern= [%d{yyyy-MM-dd HH:mm:ss}] %-5p %c %L -%m%n

    log4j.appender.appenderName=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.appenderName.file=../logs/mylog.log
    log4j.appender.appenderName.DatePattern='_'yyyy-MM-dd'.log'
    log4j.appender.appenderName.layout = org.apache.log4j.PatternLayout 
    log4j.appender.appenderName.layout.ConversionPattern= [%d{yyyy-MM-dd HH:mm:ss}] %-5p %c %L -%m%n
    log4j.appender.appenderName.encoding=utf-8 
    log4j.appender.appenderName.Threshold = ERROR 
    log4j.appender.ROLLING_FILE.MaxFileSize=10MB

    复制代码

    java 中的应用

    复制代码
    private static Logger logger = Logger.getLogger(this.getClass().getName);
    
        Logger.debug(Object message);  // 调试信息 
       Logger.info(Object message);   // 一般信息 
       Logger.warn(Object message);   // 警告信息 
       Logger.error(Object message);  // 错误信息 
    
    复制代码
  • 相关阅读:
    iOS 疑难杂症 — — 复制 Storyborad 莫名崩溃
    【Swift 2.1】共享文件操作小结(iOS 8 +)
    【Swift】 应用内显示 AppStore 某个应用的详情
    【Swift】iOS开发笔记(一)
    【Swift 2.0】实现简单弹幕功能
    站长名站
    Future home of something quite cool.
    大神们都在用的两个国外的免费离线下载:Rain& LoadBT
    Amazon Publisher Studio让产品推广更简单
    人脉是设计出来的,进入高端人脉圈的方法
  • 原文地址:https://www.cnblogs.com/zhaohongtian/p/6807395.html
Copyright © 2011-2022 走看看