logback日志按业务逻辑生成文件

logback.xml配置如下


<?xml version="1.0"?>




<!--<configuration>-->


<!--<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">-->


<!--&lt;!&ndash; encoders are assigned the type-->


<!--ch.qos.logback.classic.encoder.PatternLayoutEncoder by default &ndash;&gt;-->


<!--<encoder>-->


<!--<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>-->


<!--</encoder>-->


<!--</appender>-->


<!--<logger name="com.skplanet.impay" level="DEBUG"></logger>-->


<!--<logger name="org.springframework.context" level="DEBUG"></logger>-->


<!--<root level="info">-->


<!--<appender-ref ref="STDOUT" />-->


<!--</root>-->


<!--</configuration>-->


<!-- scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。 debug: 当此属性设置为true时,将打印出logback内部日志信息,实时查看logback运行状态。默认值为false。 -->


-<configuration debug="true" scanPeriod="60 seconds" scan="false">


<!--定义日志文件的存储地址 勿在 LogBack 的配置中使用相对路径-->




<property value="./log" name="LOG_HOME"/>
> 
<!-- 控制台输出 -->






-<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">




-<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">


<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->




<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>


</encoder>


</appender>




-<appender name="FILE_ROOM" class="ch.qos.logback.classic.sift.SiftingAppender">




-<discriminator>


<Key>ROOM_ID</Key>


<DefaultValue>0</DefaultValue>


</discriminator>




-<sift>


<!-- 按照每天生成日志文件 -->






-<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">


<!--<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。-->




<!--<file></file>-->




<!-- <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。 -->




<append>true</append>


<!--<prudent>:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->




<prudent>false</prudent>




-<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">


<!--日志文件输出的文件名-->




<FileNamePattern>${LOG_HOME}/${ROOM_ID}/LotusGameServer_%d{yyyy-MM-dd-HH}.txt</FileNamePattern>


<!--日志文件保留天数-->




<MaxHistory>120</MaxHistory>


<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->




<totalSizeCap>60GB</totalSizeCap>


</rollingPolicy>




-<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">


<charset>UTF-8</charset>


<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->




<pattern>%X{ROOM_ID} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>


</encoder>




-<layout class="ch.qos.logback.classic.PatternLayout">


<Pattern> %X{ROOM_ID} %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </Pattern>


</layout>


</appender>


</sift>


</appender>


<!-- 按照每天生成日志文件 -->






-<appender name="ERROR_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">


<!--<file>:被写入的文件名,可以是相对目录,也可以是绝对目录,如果上级目录不存在会自动创建,没有默认值。-->




<!--<file></file>-->




<!-- <append>:如果是 true,日志被追加到文件结尾,如果是 false,清空现存文件,默认是true。 -->




<append>true</append>


<!--<prudent>:如果是 true,日志会被安全的写入文件,即使其他的FileAppender也在向此文件做写入操作,效率低,默认是 false。-->




<prudent>false</prudent>




-<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">


<!--日志文件输出的文件名-->




<FileNamePattern>${LOG_HOME}/error_log/LotusGameServer_%d{yyyy-MM-dd-HH}.txt</FileNamePattern>


<!--日志文件保留天数-->




<MaxHistory>120</MaxHistory>


<!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->




<totalSizeCap>60GB</totalSizeCap>


</rollingPolicy>




-<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">


<charset>UTF-8</charset>


<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->




<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>


</encoder>




-<layout class="ch.qos.logback.classic.PatternLayout">


<Pattern> %d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n </Pattern>


</layout>




-<filter class="ch.qos.logback.classic.filter.LevelFilter">


<level>ERROR</level>


<onMatch>ACCEPT</onMatch>


<onMismatch>DENY</onMismatch>


</filter>


</appender>


<!-- 日志输出级别 -->




<!--TRACE, DEBUG, INFO, WARN, ERROR, ALL 和 OFF-->






-<root level="INFO">


<appender-ref ref="STDOUT"/>


<appender-ref ref="FILE_ROOM"/>


<appender-ref ref="ERROR_FILE"/>


</root>







</configuration>







java实现

package com.maweis.lotus.utils;


import org.slf4j.Logger;
import org.slf4j.MDC;


public final class LoggerUtils {








    public static void info(Logger logger, String roomId,String msg) {
        MDC.put("ROOM_ID", roomId);
        logger.info(msg);
        MDC.remove("ROOM_ID");
    }




    public static void info(Logger logger, String roomId,String msg, Object... arguments) {
        MDC.put("ROOM_ID", roomId);
        logger.info(msg, arguments);
        MDC.remove("ROOM_ID");
    }




    public static void error(Logger logger, String roomId,String msg) {
        MDC.put("ROOM_ID", roomId);
        logger.error(msg);
        MDC.remove("ROOM_ID");
    }




    public static void error(Logger logger, String roomId,String msg, Object... arguments) {
        MDC.put("ROOM_ID", roomId);
        logger.error(msg, arguments);
        MDC.remove("ROOM_ID");
    }

}





然后可直接用LoggerUtil代替Logger打印日志

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值