zoukankan      html  css  js  c++  java
  • JAVA后台框架优化之日志篇

    1.日志规范

         各业务系统日志需要统一,以方便查看、收集日志, 日后统一ELK日志管理,以下为项目的日志配置,

         这是兼容当前系统的日志,以后推行微服架构时会有变动,但日志存放方式不会改变,日后会推行spring boot log4j2.yml

          主要分为三块 : 控制台日志 consoleAppend (本地调试可以打开,发布环境不能打开)

                                     业务日志   infoAppend  按日切分  ${catalina.home}/logs/ucenter/info.log  (ucenter 为具体业务模块的名称 如站点 site)

                                     错误日志  errorAppend 按日切分  ${catalina.home}/logs/ucenter/error.log

         各业务模块接入:只要把下面  log4j.xml (链接)文件放到web 模块 根目录下即可。

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
        <!--
           * 1. 一个appender子元素定义一个日志输出目的地
           * 2. 一个logger子元素定义一个日志写出器
        -->
        <!-- catalina.out -->
        <appender name="consoleAppend" class="org.apache.log4j.ConsoleAppender" >
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%-d{yyyy-MM-dd HH:mm:ss} [%5p][%t][%c{1}]-[%M] %m%n" />
            </layout>
        </appender>
    
        <!-- error log -->
        <appender name="errorAppend" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="File" value="${catalina.home}/logs/ucenter/error.log" />
            <param name="Append" value="true" />
            <!--<param name="DatePattern" value="yyyy-MM-dd-HH-mm'.html'"/>-->
            <param name="DatePattern" value="yyyy-MM-dd'.log'"/>
            <param name="MaxBackupIndex" value="10" />
            <param name="MaxFileSize" value="4000000" />
            <param name="encoding" value="utf-8"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="ERROR" />
                <param name="LevelMax" value="ERROR" />
            </filter>
        </appender>
    
        <!-- INFO -->
    
        <!--org.apache.log4j.RollingFileAppender(文件大小到达指定尺寸的时候产生一个新的文件)-->
        <!--<appender name="infoAppend" class="org.apache.log4j.RollingFileAppender">-->
        <appender name="infoAppend" class="cn.gamemall.ucenter.core.aop.logger.core.DailyRollingFileInfoAppender">
            <param name="File" value="${catalina.home}/logs/ucenter/info.log" />
            <param name="Append" value="true" />
            <param name="DatePattern" value="'.'yyyy-MM-dd'.log'" />
            <!--<param name="MaxBackupIndex" value="10" />-->
            <!--<param name="MaxFileSize"  value="4096" />-->
            <param name="threshold" value="INFO"/>
            <param name="encoding" value="utf-8"/>
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="DEBUG" />
                <param name="LevelMax" value="WARN" />
            </filter>
        </appender>
    
        <appender name="IBatisAppend" class="org.apache.log4j.DailyRollingFileAppender">
            <param name="Append" value="true" />
            <param name="File" value="${catalina.home}/logs/ucenter/info.log" />
            <param name="DatePattern" value="'.'yyyy-MM-dd" />
            <param name="encoding" value="UTF-8" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="%d [%t][%c] %p - %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="ERROR" />
                <param name="LevelMax" value="FATAL" />
            </filter>
        </appender>
    
        <!--
            logger的作用:
            1.[name属性]:指定你定义Logger对象时候的name
            2. additivity : children-logger是否使用 rootLogger的配置,
               additivity在log4j默认为true。这解释了为什么有些时候,一个日志信息在屏幕上会有多次输出。
            3.还可以指定level(输出级别)、appender-ref(指定哪个append)
         -->
        <!-- loggers -->
        <logger name="com.ibatis" additivity="true">
            <level value="ERROR"/>
            <appender-ref ref="IBatisAppend" />
        </logger>
        <logger name="java.sql.Connection" additivity="true">
            <level value="ERROR"/>
            <appender-ref ref="IBatisAppend" />
        </logger>
    
        <logger name="java.sql.Statement" additivity="true">
            <level value="ERROR"/>
            <appender-ref ref="IBatisAppend" />
        </logger>
    
        <logger name="java.sql.PreparedStatement" additivity="true">
            <level value="DEBUG"/>
            <appender-ref ref="IBatisAppend" />
        </logger>
    
        <logger name="java.sql.ResultSet" additivity="true">
            <level value="ERROR"/>
            <appender-ref ref="IBatisAppend" />
        </logger>
    
        <logger name="cn.xxx.info" additivity="true">
            <!-- 如果1个包想对应多个 Appender 就这样,对于每个Appender自定义的日志级别可以在Appender上加上filter -->
            <level value="INFO"/>
            <appender-ref ref="infoAppend" />
        </logger>
        <logger name="cn.xxx.error" additivity="true">
            <!-- 如果1个包想对应多个 Appender 就这样,对于每个Appender自定义的日志级别可以在Appender上加上filter -->
            <level value="ERROR"/>
            <appender-ref ref="infoAppend" />
        </logger>
    
        <!--
            root的作用(相当于全局的意思):
            1.[priority ]:指定默认的全局输出级别
            2.[appender-ref ]:指定一些默认的append(没有指出特殊包或者类,即那些没有指定<logger>元素的append)的输出;
        -->
        <root>
            <priority value="INFO" />
            <!--<appender-ref ref="consoleAppend" />-->
            <appender-ref ref="IBatisAppend" />
            <appender-ref ref="errorAppend" />
            <appender-ref ref="infoAppend" />
        </root>
    
    </log4j:configuration>
  • 相关阅读:
    高通电池曲线(转)
    随笔分类
    海思uboot启动流程详细分析(转)
    GPRS以TCP上传数据到服务器OK,但收不到服务器下发的数据
    WIS800C TCP Client 非透传模式连接远程服务器使用方法(转)
    MySQL 不允许从远程访问的解决方法
    Linux下将Mysql和Apache加入到系统服务里的方法
    linux服务器出现严重故障后的原因以及解决方法
    Linux防火墙该如何设置
    Linux下的两个聊天命令的使用方法
  • 原文地址:https://www.cnblogs.com/laobaozi/p/6638701.html
Copyright © 2011-2022 走看看