java logback将不同的业务日志输出到不同的文件存储

在一个系统中一般都是需要记录系统日志的。一方面是对系统运行和用户访问的记录,还有一方面是方便对于问题或错误的排查。一般来说将所有的日志输出到一个文件中这并没有什么问题,直到遇到这样一个需求:有一些接口请求的日志需要单独记录在一个日志文件中,方便以后统计或者查看。

所以我们需要这样来做,一方面原有的日志记录保持不变,另一方面我们对日志模块稍加改动,来将我们需要的日志单独保存。(可以简单理解为两个用户,第一个用户记录系统的日志,第二个用户记录特定的日志)

1.首先配置好正常的日志文件(logback.xml)

2.在logback.xml中添加我们定义的日志输出模块

//不同业务日志记录到不同的文件
<appender name="zhangsanAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <File>logs/业务A.log</File>
    <append>true</append>
    <filter class="ch.qos.logback.classic.filter.LevelFilter">
        <level>INFO</level>
        <onMatch>ACCEPT</onMatch>
        <onMismatch>DENY</onMismatch>
    </filter>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
        <fileNamePattern>logs/业务A.%d.%i.log</fileNamePattern>
        <maxHistory>90</maxHistory>
        <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
            <maxFileSize>10MB</maxFileSize>
        </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
        <pattern>%d{yyyy/MM/dd HH:mm:ss.SSS} %-5level [%thread] [%c{0}:%L] : %msg%n</pattern>
        <charset>UTF-8</charset>
    </encoder>
</appender>

//这是我们定义的访问日志传入的名称
<logger name="zhangsanLog" additivity="false" level="INFO">
    <appender-ref ref="zhangsanAppender"/>
</logger>

3.调用格式

//正常的日志声明
private final Logger logger= LoggerFactory.getLogger(this.getClass());

//记录特定日志的声明
private final Logger newLogger = LoggerFactory.getLogger("zhangsanLog");

//正常的日志存储
logger.info("查看汽车的用户: " + phone);

//特定的日志存储
newLogger.info("查看宝马汽车的用户: " + phone);

这样特定的日志就会按照第二步中的文件路径进行单独存储。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章