<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 尽量别用绝对路径,如果带参数不同容器路径解释可能不同,以下配置参数在pom.xml里 --> <property name="log.root.level" value="INFO" /> <!-- 日志级别 --> <property name="log.other.level" value="DEBG" /> <!-- 其他日志级别 --> <property name="log.base" value="/logs" /> <!-- 日志路径,这里是相对路径,web项目eclipse下会输出到eclipse的安装目录下,如果部署到linux上的tomcat下,会输出到tomcat/bin目录 下 --> <property name="log.moduleName" value="acg" /> <!-- 模块名称, 影响日志配置名,日志文件名 --> <property name="log.max.size" value="30MB" /> <!-- 日志文件大小 --> <timestamp key="bySecond" datePattern="yyyy-MM-dd"/> <!--控制台输出 --> <appender name="stdout" class="ch.qos.logback.core.ConsoleAppender"> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <Pattern>%date{yyyy-MM-dd HH🇲🇲ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</Pattern> </encoder> </appender> <!-- 日志文件输出 --> <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender"> <File>${log.base}/acg_${bySecond}.log</File><!-- 设置日志不超过${log.max.size}时的保存路径,注意如果 是web项目会保存到Tomcat的bin目录 下 --> <!-- 滚动记录文件,先将日志记录到指定文件,当符合某个条件时,将日志记录到其他文件。--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <FileNamePattern>${log.base}/archive/acg_all_%d{yyyy-MM-dd}.%i.log.zip </FileNamePattern> <!-- 当天的日志大小 超过${log.max.size}时,压缩日志并保存 --> <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP"> <maxFileSize>30MB</maxFileSize> <maxHistory>30</maxHistory> <totalSizeCap>300MB</totalSizeCap> </timeBasedFileNamingAndTriggeringPolicy> </rollingPolicy> <!-- 日志输出的文件的格式 --> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%date{yyyy-MM-dd HH🇲🇲ss.SSS} %-5level [%thread]%logger{56}.%method\(\):%L -%msg%n</pattern> </layout> </appender> <!-- 为某个包下的所有类的指定Appender 这里也可以指定类名称例如:com.aa.bb.ClassName --> <!-- <logger name="com.lin" additivity="false"> <level value="debug" /> <appender-ref ref="stdout" /> <appender-ref ref="file" /> </logger>--> <!-- root将级别为“DEBUG”及大于“DEBUG”的日志信息交给已经配置好的名为“Console”的appender处理,“Console”appender将信息打印到Console --> <root level="debug"> <!-- 标识这个appender将会添加到这个logger --> <appender-ref ref="stdout" /> <appender-ref ref="file" /> </root> </configuration>
配置内容如上:这是网上借鉴前辈的,注释也很详细,但是尝试了一下,有些纠结的地方。
1.如何在xml配置中引入properties配置文件
网上看到的<property resource = "xxx"/> 和<property file= "xxx"/>
都失败了。打印出来的这些字段,都是,notdefind。上面配置中使用的${log.base}其实读取的是 开头中配置的
<property name="log.base" value="/logs" />
这也是我第一次见过这么配置的xml,这样毫无意义呀!
我想将这些信息拿出来放到单个文件中,但是始终读不到properties。
(备注:借鉴的前辈是在pom中配置的参数,但我个人觉得不喜欢这种方式,按我个人的理解,会造成pom文件变得更加臃肿,所以也就没有尝试)
2.日志输出的目录问题,虽然上面注释里面写了,会放到tomcat的bin下面,但是事实上在idea中启动后,并没有放进去。但是如果不配置的话或者log.base这个配置找不到的时候会默认放到bin下面,但是bin下面啊?能说wtf嘛。
3.另外有个不太明白的地方
<maxFileSize>30MB</maxFileSize>
<maxHistory>30</maxHistory>
<totalSizeCap>300MB</totalSizeCap>
这三个配置,不能想log.base一样使用${}这种方式获取上面配置信息。会报错。
还请大佬指教一下,或者说,有什么好的方式,在maven项目中整合spring。
感激不尽!
1.使用properties文件管理属性。<propertyfile=''/> 可以是相对路径,也可以是绝对路径
也可以 <propertyresource=''/> 这个地方使用的是在classpath上寻找属性文件
2.使用eclipse通过tomcat运行web项目的时候,确实是默认输出到bin下。。。。这是相对于运行的目录啊
3.关于分割文件的三个参数,也是可以通过属性配置的。。。。。。
再仔细检查下吧。。。。
附上官方文档: https://logback.qos.ch/manual/configuration.html#definingProps
这两种方式都用相对路径都找不到绝对路径没有尝试如果你期望非常灵活的logback配置,强推logback的groovyDSL,通过groovy代码,想怎么定义怎么定义,全放环境变量都没问题,比如dgate使用的logbackgroovyDSL配置:https://github.com/DTeam-Top/dgate/blob/master/src/main/resources/logback.groovy
利用groovy代码配置logback属性,非常灵活,也非常简单方便。不过需要在项目依赖中引入groovy的jar包
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。