• Log4j配置及使用


    一、log4j.properties配置文件

    Log4j默认的配置文件是log4j.properties,将该文件置于classpath下,容器启动时会初始化Log4j。Log4j把日志级别由低到高依次分为ALL、TRACE、DEBUG、INFO、WARN、ERROR、FITAL和OFF等。其中,级别高的会屏蔽低的信息。如果设置为WARN,则INFO、DEBUG都不会输出。

    二、5个重要的概念

    Log4j配置中有5个重要的概念:日志记录器(Logger)、根记录器(rootLogger)、类别(category)、输出地(Appender)以及日志格式化器(Layout)。其中,Logger负责记录日志;rootLogger是所有记录器的父亲,任何记录器都可继承rooLogger的配置;category可以设置类别下所有的Logger,类似于java中的包,效果与Logger名字等价;Appender负责输出到什么地方;Layout负责以什么格式输出、输出哪些附加信息(比如:时间、类名、方法名、所在行数等)。在log4j.properties配置中,log4j.logger后面配置的是Logger,log4j.appender后面配置的是Appender,rootLogger直接用log4j.rootLogger配置。

    三、1个log4j.properties配置实例

    # 配置rootLogger为info级别,两个输出地:all_appender,console_appender
    log4j.rootLogger=info,all_appender,console_appender
    # 定义一个Logger,级别为debug,两个输出地:console_appender,bd_data_appender
    log4j.logger.debugLogger=debug,console_appender,bd_data_appender
    log4j.logger.infoLogger=info,console_appender,info_appender
    log4j.logger.warnLogger=warn,console_appender,warn_appender
    log4j.logger.errorLogger=error,console_appender,error_appender
    log4j.logger.fatalLogger=fatal,console_appender,fatal_appender
    
    #输出到控制台
    log4j.appender.console_appender=org.apache.log4j.ConsoleAppender
    log4j.appender.console_appender.layout=org.apache.log4j.PatternLayout    #自定义输出信息
    log4j.appender.console_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-%t-[%p]: %m%n
    #将info以上级别的日志输出到按大小滚动文件
    log4j.appender.info_appender=org.apache.log4j.RollingFileAppender
    log4j.appender.info_appender.File=mm_logs/info.log    #滚动文件名
    log4j.appender.info_appender.MaxFileSize=20000KB    #文件达到20000KB就自动改名:info.log.1,info.log.2,info.log.3...直到info.log.30
    log4j.appender.info_appender.MaxBackupIndex=30    #最多备件30个文件
    log4j.appender.info_appender.layout=org.apache.log4j.PatternLayout
    log4j.appender.info_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-%t-[%p]: %m%n
    #将warn以上级别的日志输出到按大小滚动文件
    log4j.appender.warn_appender=org.apache.log4j.RollingFileAppender
    log4j.appender.warn_appender.File=mm_logs/warn.log
    log4j.appender.warn_appender.MaxFileSize=20000KB
    log4j.appender.warn_appender.MaxBackupIndex=30
    log4j.appender.warn_appender.layout=org.apache.log4j.PatternLayout
    log4j.appender.warn_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-%t-[%p]: %m%n
    #将erro以上级别的日志输出到按大小滚动文件
    log4j.appender.error_appender=org.apache.log4j.RollingFileAppender
    log4j.appender.error_appender.File=mm_logs/error.log
    log4j.appender.error_appender.MaxFileSize=20000KB
    log4j.appender.error_appender.MaxBackupIndex=30
    log4j.appender.error_appender.layout=org.apache.log4j.PatternLayout
    log4j.appender.error_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-%t-[%p]: %m%n
    #将fatal以上级别的日志输出到按大小滚动文件
    log4j.appender.fatal_appender=org.apache.log4j.RollingFileAppender
    log4j.appender.fatal_appender.File=mm_logs/fatal.log
    log4j.appender.fatal_appender.MaxFileSize=20000KB
    log4j.appender.fatal_appender.MaxBackupIndex=30
    log4j.appender.fatal_appender.layout=org.apache.log4j.PatternLayout
    log4j.appender.fatal_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-%t-[%p]: %m%n
    #将info以上级别日志输出到按日期滚动文件,Logger级别继承rootLogger配置
    log4j.appender.all_appender=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.all_appender.File=mm_logs/all.log    #文件位置
    log4j.appender.all_appender.layout=org.apache.log4j.PatternLayout    
    log4j.appender.all_appender.layout.ConversionPattern=%-d{yyyy-MM-dd HH:mm:ss}-%t-[%p]: %m%n
    log4j.appender.all_appender.DatePattern='.'yyyy-MM-dd    #滚动日期格式 进入新的一天后,文件会被自动更名为,格式为all.log.2017.10.29
    #将debug以上级别日志输出到按日期滚动文件
    log4j.appender.bd_data_appender=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.bd_data_appender.File=mm_logs/data.log
    log4j.appender.bd_data_appender.layout=org.apache.log4j.PatternLayout
    log4j.appender.bd_data_appender.layout.ConversionPattern=%m%n
    log4j.appender.bd_data_appender.DatePattern='.'yyyy-MM-dd
    
    # ===================================================================================
    #设置相应包的级别
    log4j.logger.com.opensymphony.xwork2=error
    log4j.logger.org.apache.commons.httpclient=off
    log4j.logger.org.apache.struts2=info
    
    log4j.logger.org.springframework=info
    log4j.logger.org.springframework.security=info
    log4j.logger.org.springframework.web.filter.CommonsRequestLoggingFilter=warn
    log4j.logger.org.quartz=warn
    
    log4j.logger.org.hibernate.type=off
    log4j.logger.org.hibernate.ps.PreparedStatementCache=info
    log4j.appender.logfile.encoding=UTF-8

    四、java代码中使用Log4j

    Logger就是java代码中的Logger,如:
    public Logger log=Logger.getLogger(Log4jTest.class)
    Logger的名字是Logger.getLogger()方法的参数,如果参数为所在的类,Log4j会取把类名作为Logger的名称,如com.hello.world.Log4jTest。
    命名规则:一般以类名作为Logger的名称,名字类似java中的包名,大小写敏感,用点分开且具有继承关系。在log4j.properties中,通过名称来配置Logger的属性。
    下面是Log4j的一个简单例子:

    package com.hello.world;
    import org.apache.log4j.Logger;
    public class Log4jTest{
        public static Logger log=Logger.getLogger(Log4jTest.class);
        public static void main(String[] args){
            log.debug("debug信息");
            log.info("info信息");
        }
    }
  • 相关阅读:
    记一次centos7.2下用crontab执行定时任务的过程(初级)
    海外手机号码正则匹配
    装了wamp之后,80端口被占用解决办法
    newtonsoft动态修改JObject
    .net正则提取手机号码,并替换带有手机号码的a标签
    .vs目录有什么用?
    centos7安装nginx-1.13.6 新手入门,图文解析
    centos7安装kafka_2.11-1.0.0 新手入门
    centos7安装apache 新手入门 图文教程
    面向对象——案例练习(4)判断点是否在圆的内部
  • 原文地址:https://www.cnblogs.com/aaron-shu/p/7812757.html
Copyright © 2020-2023  润新知