使用slf4j输出日志到文件
log4j.properties
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
### set log levels ### log4j.rootLogger=debug, stdout, D, E #ConsoleAppender,控制台输出 #FileAppender,文件日志输出 #SMTPAppender,发邮件输出日志 #SocketAppender,Socket 日志 #NTEventLogAppender,Window NT 日志 #SyslogAppender, #JMSAppender, #AsyncAppender, #NullAppender #文件输出:RollingFileAppender #log4j.rootLogger = INFO,logfile ### 输出到控制台 ### log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out ### 布局格式,可以灵活指定 log4j.appender.stdout.layout=org.apache.log4j.PatternLayout ### 消息格式化 log4j.appender.stdout.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} %m%n ### 输出到日志文件 ### log4j.appender.D=org.apache.log4j.RollingFileAppender log4j.appender.D.File=logs/log.log log4j.appender.D.Append= true log4j.appender.D.Threshold=DEBUG log4j.appender.D.layout=org.apache.log4j.PatternLayout log4j.appender.D.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} %m%n # 一个 log 文件的大小,超过这个大小就又会生成 1 个日志 # KB ,MB,GB log4j.appender.D.MaxFileSize=5MB # 最多保存 3 个文件备份 log4j.appender.D.MaxBackupIndex= 5 ### 保存异常信息到单独文件 ### log4j.appender.E=org.apache.log4j.RollingFileAppender log4j.appender.E.File=logs/error.log log4j.appender.E.Append= true log4j.appender.E.Threshold=ERROR log4j.appender.E.layout=org.apache.log4j.PatternLayout log4j.appender.E.layout.ConversionPattern=[%-5p] %d{yyyy-MM-dd HH:mm:ss:SSSS} method:%l %m%n # 一个 log 文件的大小,超过这个大小就又会生成 1 个日志 # KB ,MB,GB log4j.appender.E.MaxFileSize=5MB # 最多保存 3 个文件备份 log4j.appender.E.MaxBackupIndex= 5 |
slf4j将部分日志打印在其他文件中
logback.xml配置中新增一个FileAppender
并定义输出格式和路径
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
<? xml version = "1.0" encoding = "UTF-8" ?> < configuration > < property name = "log.base" value = "/logs" /> < property name = "log.moduleName" value = "zhxy-service-order" /> <!-- 模块名称, 影响日志配置名,日志文件名 --> < property name = "log.base.order" value = "/logs/orderLog" /> < property name = "log.max.size" value = "1024MB" /> <!-- 日志文件大小 -->
<!-- 彩色日志 --> <!-- 彩色日志依赖的渲染类 --> < 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}}" />
<!-- Console 输出设置 --> < appender name = "ConsoleLog" class = "ch.qos.logback.core.ConsoleAppender" > < encoder charset = "UTF-8" > <!-- <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>--> < pattern >${CONSOLE_LOG_PATTERN}</ pattern > </ encoder > </ appender >
<!-- Info日志文件输出 --> < appender name = "FileInfoLog" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <!--只输出INFO--> < filter class = "ch.qos.logback.classic.filter.LevelFilter" > <!--过滤 INFO--> < level >DEBUG</ level > <!--匹配到就禁止--> < onMatch >ACCEPT</ onMatch > <!--没有匹配到就允许--> < onMismatch >DENY</ onMismatch > </ filter > <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 --> < File >${log.base}/${log.moduleName}_info.log</ File > <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--> < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <!--日志文件输出的文件名--> < FileNamePattern >${log.base}/${log.moduleName}_info_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern > <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 --> < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" > < maxFileSize >${log.max.size}</ maxFileSize > </ timeBasedFileNamingAndTriggeringPolicy > </ rollingPolicy > <!--日志输出的文件的格式 --> < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern > < charset >UTF-8</ charset > </ encoder > </ appender >
<!--Error日志文件输出--> < appender name = "FileErrorLog" class = "ch.qos.logback.core.rolling.RollingFileAppender" > < filter class = "ch.qos.logback.classic.filter.ThresholdFilter" > <!--设置日志级别,过滤掉info日志,只输入error日志--> < level >ERROR</ level > </ filter > <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 --> < File >${log.base}/${log.moduleName}_error.log</ File > <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--> < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <!--日志文件输出的文件名--> < FileNamePattern >${log.base}/${log.moduleName}_error_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern > <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 --> < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" > < maxFileSize >${log.max.size}</ maxFileSize > </ timeBasedFileNamingAndTriggeringPolicy > </ rollingPolicy > <!--日志输出的文件的格式 --> < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern > < charset >UTF-8</ charset > </ encoder > </ appender >
<!-- Info日志文件输出 --> < appender name = "OrderLog" class = "ch.qos.logback.core.rolling.RollingFileAppender" > <!--只输出INFO--> < filter class = "ch.qos.logback.classic.filter.LevelFilter" > <!--过滤 INFO--> < level >DEBUG</ level > </ filter > <!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 --> < File >${log.base.order}/${log.moduleName}_info.log</ File > <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--> < rollingPolicy class = "ch.qos.logback.core.rolling.TimeBasedRollingPolicy" > <!--日志文件输出的文件名--> < FileNamePattern >${log.base.order}/${log.moduleName}_info_%d{yyyy-MM-dd}.%i.log.zip</ FileNamePattern > <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 --> < timeBasedFileNamingAndTriggeringPolicy class = "ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP" > < maxFileSize >${log.max.size}</ maxFileSize > </ timeBasedFileNamingAndTriggeringPolicy > </ rollingPolicy > <!--日志输出的文件的格式 --> < encoder class = "ch.qos.logback.classic.encoder.PatternLayoutEncoder" > <!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> < pattern >%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</ pattern > < charset >UTF-8</ charset > </ encoder > </ appender >
<!--日志等级设置--> < logger name = "org.springframework" level = "error" ></ logger > < root level = "info" > < appender-ref ref = "ConsoleLog" /> </ root >
<!-- 为某个包下的所有类的指定Appender 这里也可以指定类名称例如:com.aa.bb.ClassName --> < logger name = "com.company" level = "debug" > < appender-ref ref = "FileInfoLog" /> < appender-ref ref = "FileErrorLog" /> </ logger >
< logger name = "order" level = "debug" > < appender-ref ref = "OrderLog" /> </ logger > </ configuration > |
在需要额外打印日志的地方
1 2 |
Logger orderLog = LoggerFactory.getLogger( "order" ); orderLog.info( "singleOrder params: {}" ,params); |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
原文链接:https://blog.csdn.net/qq_39898191/article/details/121620834
查看更多关于maven如何使用slf4j输出日志到文件的详细内容...