logback日志的配置问题,特来求助大神

微笑兔 发布于 2017/11/30 15:55
阅读 247
收藏 0
<?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。

感激不尽!

加载中
0
张恒强
张恒强

1. 使用properties文件管理属性。 <property file=''/>  可以是相对路径,也可以是绝对路径

 也可以  <property resource='' />  这个地方使用的是在classpath上寻找属性文件

2. 使用eclipse通过tomcat 运行web项目的时候,确实是默认输出到bin下。。。。这是相对于运行的目录啊

3. 关于分割文件的三个参数,也是可以通过属性配置的。。。。。。

 

再仔细检查下吧。。。。

附上官方文档:  https://logback.qos.ch/manual/configuration.html#definingProps

微笑兔
微笑兔
这两种方式都用相对路径 都找不到 绝对路径没有尝试
0
Feng_Yu
Feng_Yu

如果你期望非常灵活的logback配置,强推logback的groovy DSL,通过groovy代码,想怎么定义怎么定义,全放环境变量都没问题,比如dgate使用的logback groovy DSL配置: https://github.com/DTeam-Top/dgate/blob/master/src/main/resources/logback.groovy

利用groovy代码配置logback属性,非常灵活,也非常简单方便。不过需要在项目依赖中引入groovy的jar包

返回顶部
顶部