美文网首页Java
基于log4j.properties配置,(log4j、slf4

基于log4j.properties配置,(log4j、slf4

作者: iMUST_Clown | 来源:发表于2019-06-26 00:52 被阅读0次

    本文内容

    • 基于log4j.properties配置文件,实现指定的日志输出到指定文件
    • 刚开始写,可能不够准确,后续回顾会精炼

    前置知识

    • maven
    • log4j
    • slf4j
    • 包括但不限于以上

    需求背景

    1 . 一个模块一台机器上的日志要10+GB,遇到问题翻看日志查找感觉很累。
    2 . 需要对特定模块的指定级别日志特别处理
    3 . 如果运行到模块A,try catch到情况,打印error级别日志,只输出或另外输出到指定目录,创建指定日志文件。如果有日志则当天结束后以模块名称+日期的形式保存错误日志文件,如果没有,则不生成日志文件。

    1. 以上设想完成,达到节省时间定位到该模块是否有抛出异常级别的问题。
      5.还有不够完善的地方,后续遇到会逐步完善

    具体操作

    1. 新建maven工程

    01新建maven工程.png
    02选择quickstart即可.png
    03填写工程名.png

    2.新建文件夹

    04在main文件夹下创建文件夹命名为resources.png

    3. 目录结构如图

    05目录结构.png

    4.pom文件配置

      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>3.8.1</version>
          <scope>test</scope>
        </dependency>
        <!-- 配置日志 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>1.7.5</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.12</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
    

    5.测试类编写

    import org.junit.Test;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
     
    /**
     * 
     * @author left 2019-06-25 23:16:42
     *
     */
    public class LogTest {
     
        private static final Logger log = LoggerFactory.getLogger(LogTest.class);
        private static final Logger log2 = LoggerFactory.getLogger("special");
     
        @Test
        public void testLog() {
       // 测试打印普通日志
            log.info("test info");
        }
     
        @Test
        public void testLog2() {
       // 测试打印liveness模块日志到指定日志文件
            log2.info("test special");
        }
    }
    

    6. log4j.properties配置

    ### 日志级别 ###
    log4j.rootLogger = INFO , C , F , E
     
    ### 控制台 console ###
    log4j.appender.C = org.apache.log4j.ConsoleAppender
    log4j.appender.C.Target = System.out
    log4j.appender.C.layout = org.apache.log4j.PatternLayout
    log4j.appender.C.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
     
    ### 文件 file ###
    log4j.appender.F = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.F.File =/home/left/logs/mall/mall_info_log_
    log4j.appender.F.File.DatePattern=yyyy-MM-dd'.log' 
    log4j.appender.F.Append = true
    log4j.appender.F.Threshold = INFO 
    log4j.appender.F.layout = org.apache.log4j.PatternLayout
    log4j.appender.F.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
     
    ### 异常 exception ###
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File =/home/left/logs/mall/mall_error_log_
    log4j.appender.E.File.DatePattern=yyyy-MM-dd'.log' 
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR 
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
     ### JDBC ###
    log4j.logger.com.ibatis=DEBUG
    log4j.logger.com.ibatis.common.jdbc.SimpleDataSource=DEBUG
    log4j.logger.com.ibatis.common.jdbc.ScriptRunner=DEBUG
    log4j.logger.com.ibatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG
    log4j.logger.org.mybatis=DEBUG
    ### SQL ###
    log4j.logger.java.sql.Connection=DEBUG
    log4j.logger.java.sql.Statement=DEBUG
    log4j.logger.java.sql.PreparedStatement=DEBUG
    log4j.logger.java.sql.ResultSet=DEBUG
     
    # 输出special日志
    log4j.logger.special = INFO, special
    # 是否在父log中输出日志
    log4j.additivity.special = false
    # 每天生产日志文件
    log4j.appender.special = org.apache.log4j.DailyRollingFileAppender
    # 生成日志到单独的文件
    log4j.appender.special.File =/home/left/logs/mall/special/special_
    log4j.appender.special.File.DatePattern=yyyy-MM-dd'.log' 
    # 追加日志
    log4j.appender.special.Append = true
    # 日志级别
    log4j.appender.special.Threshold = INFO
    log4j.appender.special.layout = org.apache.log4j.PatternLayout
    # 日志格式
    log4j.appender.special.layout.ConversionPattern = [%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n
    

    7. 最后运行结果,日志文件如图

    最后运行结果.png

    相关文章

      网友评论

        本文标题:基于log4j.properties配置,(log4j、slf4

        本文链接:https://www.haomeiwen.com/subject/srifcctx.html