• Log4j分级别保存日志到单个文件中,并记录IP和用户信息


    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
    <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
        <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %X{ip} %t %p %c————%X{userAccount} %m%n" />
            </layout>
        </appender>
        <!-- 将日志信息输出到文件,但是当文件的大小达到某个阈值的时候,日志文件会自动回滚 -->
        <appender name="INFO" class="org.apache.log4j.RollingFileAppender">
            <!-- 设置日志信息输出文件全路径名 -->
            <param name="File" value="/var/cispLog/info/info.log" />
            <!-- 设置是否在重新启动服务时,在原有日志的基础添加新日志 -->
            <param name="Append" value="true" />
            <!-- 设置当日志文件达到此阈值的时候自动回滚,单位可以是KB,MB,GB,默认单位是KB -->
            <param name="MaxFileSize" value="100MB" />
            <!-- 设置保存备份回滚日志的最大个数 -->
            <param name="MaxBackupIndex" value="10" />
            <!-- 设置日志输出的样式 -->
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %X{ip} %t %p %c————%X{userAccount} %m%n" />
            </layout>
            <!--过滤器设置输出的级别 -->
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <!-- 设置日志输出的最小级别 -->
                <param name="LevelMin" value="INFO" />
                <!-- 设置日志输出的最大级别 -->
                <param name="LevelMax" value="INFO" />
            </filter>
        </appender>
    
        <appender name="WARN" class="org.apache.log4j.RollingFileAppender">
            <param name="File" value="/var/cispLog/warn/warn.log" />
            <param name="Append" value="true" />
            <param name="MaxFileSize" value="50MB" />
            <param name="MaxBackupIndex" value="10" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %X{ip} %t %p %c————%X{userAccount} %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="WARN" />
                <param name="LevelMax" value="WARN" />
            </filter>
        </appender>
    
        <appender name="ERROR" class="org.apache.log4j.RollingFileAppender">
            <param name="File" value="/var/cispLog/error/error.log" />
            <param name="Append" value="true" />
            <param name="MaxFileSize" value="50MB" />
            <param name="MaxBackupIndex" value="10" />
            <layout class="org.apache.log4j.PatternLayout">
                <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %X{ip} %t %p %c————%X{userAccount} %m%n" />
            </layout>
            <filter class="org.apache.log4j.varia.LevelRangeFilter">
                <param name="LevelMin" value="ERROR" />
                <param name="LevelMax" value="ERROR" />
            </filter>
        </appender>
        <root>
            <priority value="debug" />
            <appender-ref ref="STDOUT" />
            <appender-ref ref="INFO" />
            <appender-ref ref="WARN" />
            <appender-ref ref="ERROR" />
        </root>
    </log4j:configuration>

    在记录日志的时候,我们可能有这种需求,对于每个记录除了知道日志信息外,也要记录访问该系统的IP或者用户的信息。

    MDC便提供了这个功能,只需要在代码中添加下面的方法即可

    MDC.put("ip", ip);
    MDC.put("userAccount", user.getUserAccount());

    在配置文件中用下面的方式获取即可

    %X{ip} 
    %X{userAccount}
  • 相关阅读:
    AJAX跨域JS访问
    dd
    学习java,搭建一个英文名著轻松阅读网站
    超载问题求解!!!
    nginx + uwsgi 部署Django项目
    一种算法问题,求指点!
    js除法余数
    button捕捉回车键
    为SQL表添加全文索引范例
    .Net刷新页面的小结
  • 原文地址:https://www.cnblogs.com/java-spring/p/8359629.html
Copyright © 2020-2023  润新知