温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何使用logback实现按需求打印日志到自定义的文件里

发布时间:2021-08-30 13:44:04 来源:亿速云 阅读:219 作者:小新 栏目:开发技术

小编给大家分享一下如何使用logback实现按需求打印日志到自定义的文件里,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1、工具类 LoggerUtils

import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class LoggerUtils {     public static <T> Logger Logger(Class<T> clazz) {         return LoggerFactory.getLogger(clazz);     }     /**      * 打印到指定的文件下      *      * @param desc 日志文件名称      * @return      */     public static Logger Logger(LogFileName desc) {         return LoggerFactory.getLogger(desc.getLogFileName());     } }

2、枚举类 LogFileName

import org.apache.commons.lang3.StringUtils; public enum LogFileName {     //配置到logback.xml中的logger name="getNextHh"     GET_NEXT_HH("getNextHh"),     GET_AGAIN_HH("getAgainHh"),     GET_AI_ACTION("getAiAction"),     TRAIN_ERROR("trainError"),     USER_ERROR("userError"),     PAY_ERROR("payError"),     REVIEW_ERROR("reviewError"),     WX_ERROR("wxError"),     SYSTEM_ERROR("systemError"),     PAY_DEBUG("payDebug");     private String logFileName;     LogFileName(String fileName) {         this.logFileName = fileName;     }     public String getLogFileName() {         return logFileName;     }     public void setLogFileName(String logFileName) {         this.logFileName = logFileName;     }     public static LogFileName getAwardTypeEnum(String value) {         LogFileName[] arr = values();         for (LogFileName item : arr) {             if (null != item && StringUtils.isNotBlank(item.logFileName)) {                 return item;             }         }         return null;     } }

3、logger.xml, 按需配置即可

<?xml version="1.0" encoding="UTF-8"?> <configuration xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"                xsi:noNamespaceSchemaLocation="http://www.padual.com/java/logback.xsd" debug="false"                scan="true" scanPeriod="30 second">     <property name="PROJECT" value="poker_system"/>     <property name="ROOT" value="C:/Users/Administrator/Desktop/logs/${PROJECT}/"/>     <property name="FILESIZE" value="50MB"/>     <property name="MAXHISTORY" value="30"/>     <!-- 彩色日志 -->     <!-- 彩色日志依赖的渲染类 -->     <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>     <conversionRule conversionWord="wex"                     converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>     <conversionRule conversionWord="wEx"                     converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>     <!-- 彩色日志格式 -->     <property name="CONSOLE_LOG_PATTERN"               value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss:SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>     <timestamp key="DATETIME" datePattern="yyyy-MM-dd HH:mm:ss"/>     <!-- 控制台打印 -->     <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>             <charset>UTF-8</charset>         </encoder>     </appender>     <!-- ERROR 输入到文件,按日期和文件大小 -->     <appender name="ERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <!--过滤器,只打ERROR级别的日志-->             <level>ERROR</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/error/systemError.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <appender name="TRAINERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <!--过滤器,只打ERROR级别的日志-->             <level>ERROR</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/error/trainError.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <appender name="USERERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <!--过滤器,只打ERROR级别的日志-->             <level>ERROR</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/error/userError.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <appender name="PAYERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <!--过滤器,只打ERROR级别的日志-->             <level>ERROR</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/error/payError.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <appender name="REVIEWERROR-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <!--过滤器,只打ERROR级别的日志-->             <level>ERROR</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/error/reviewError.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <!-- WARN 输入到文件,按日期和文件大小 -->     <appender name="WARN-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <level>WARN</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/warn.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <!-- INFO 输入到文件,按日期和文件大小 -->     <appender name="INFO-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <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>${ROOT}%d/info.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <!-- DEBUG 输入到文件,按日期和文件大小 -->     <appender name="DEBUG-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <level>DEBUG</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/debug.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <!-- DEBUG 输入到文件,按日期和文件大小 -->     <appender name="PAYDEBUG-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <level>DEBUG</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/debug/payDebug.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <!-- TRACE 输入到文件,按日期和文件大小 -->     <appender name="TRACE-OUT" class="ch.qos.logback.core.rolling.RollingFileAppender">         <encoder>             <pattern>${CONSOLE_LOG_PATTERN}</pattern>         </encoder>         <filter class="ch.qos.logback.classic.filter.LevelFilter">             <level>TRACE</level>             <onMatch>ACCEPT</onMatch>             <onMismatch>DENY</onMismatch>         </filter>         <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">             <fileNamePattern>${ROOT}%d/trace.%i.log</fileNamePattern>             <maxHistory>${MAXHISTORY}</maxHistory>             <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">                 <maxFileSize>${FILESIZE}</maxFileSize>             </timeBasedFileNamingAndTriggeringPolicy>         </rollingPolicy>     </appender>     <!-- Logger 根目录 -->     <root level="INFO">         <appender-ref ref="STDOUT"/>         <!--<appender-ref ref="ERROR-OUT"/>-->         <!--<appender-ref ref="WARN-OUT"/>-->         <!--<appender-ref ref="INFO-OUT"/>-->         <!--<appender-ref ref="TRACE-OUT"/>-->         <!--<appender-ref ref="REVIEWERROR-OUT"/>-->         <!--<appender-ref ref="PAYDEBUG-OUT"/>-->         <!--<appender-ref ref="PAYERROR-OUT"/>-->         <!--<appender-ref ref="USERERROR-OUT"/>-->         <!--<appender-ref ref="TRAINERROR-OUT"/>-->     </root>     <logger name="com.xxx" additivity="false" level="DEBUG">         <appender-ref ref="DEBUG-OUT"/>     </logger>     <logger name="com.xxx" additivity="false" level="ERROR">         <appender-ref ref="ERROR-OUT"/>     </logger>     <logger name="com.xxx" additivity="false" level="INFO">         <appender-ref ref="INFO-OUT"/>     </logger>     <logger name="com.xxx" additivity="false" level="TRACE">         <appender-ref ref="TRACE-OUT"/>     </logger>     <logger name="com.xxx" level="STDOUT">         <appender-ref ref="STDOUT"/>         <appender-ref ref="ERROR-OUT"/>         <appender-ref ref="WARN-OUT"/>         <appender-ref ref="INFO-OUT"/>         <appender-ref ref="TRACE-OUT"/>         <appender-ref ref="REVIEWERROR-OUT"/>         <appender-ref ref="DEBUG-OUT"/>         <!--<appender-ref ref="PAYDEBUG-OUT"/>-->         <appender-ref ref="PAYERROR-OUT"/>         <appender-ref ref="USERERROR-OUT"/>         <appender-ref ref="TRAINERROR-OUT"/>     </logger>     <!-- 不同的业务逻辑日志打印到指定文件夹-->     <logger name="trainError" level="ERROR">         <appender-ref ref="TRAINERROR-OUT"/>     </logger>     <logger name="userError" level="ERROR">         <appender-ref ref="USERERROR-OUT"/>     </logger>     <logger name="payError" level="ERROR">         <appender-ref ref="PAYERROR-OUT"/>     </logger>     <logger name="payDebug" additivity="false" level="DEBUG">         <appender-ref ref="PAYDEBUG-OUT"/>     </logger>     <logger name="reviewError" level="ERROR">         <appender-ref ref="REVIEWERROR-OUT"/>     </logger>     <logger name="systemError" level="ERROR">         <appender-ref ref="ERROR-OUT"/>     </logger> </configuration>

以上是“如何使用logback实现按需求打印日志到自定义的文件里”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI