使用Spring的TimeBasedRollingPolicy

时间:2018-08-13 13:19:07

标签: java spring-mvc logging

这是我正在使用的logback.xml代码:

<configuration>
<property resource="C:\Code\pin-ws\pin-war\src\main\resources\META-INF\config\app.properties" scope="context" />
    <appender name="FILE"
        class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.location}\pin-app.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>${log.location}\pin-app.%d{yyyy-MM-dd}.log
            </FileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%date %level [%thread] %X{username} [%file:%line] %msg%n
            </pattern>
        </encoder>
    </appender>
    <root level="DEBUG">
        <appender-ref ref="FILE" />
    </root>
    </configuration>
  1. 我正在尝试从我的app.properties中获取日志位置的值。但是它不起作用。有人可以建议我改用哪个属性标签吗?
  2. 当我在logback.xml本身中对日志位置进行硬编码时,我可以看到日志已打印在我的日志文件中。 但是即使在这种情况下,也只会在pin-app.log后面附加值,而不会创建pin-app。%d {yyyy-MM-dd} .log。 使用TimeBasedRollingPolicy时我做错什么了吗?
  3. 很好奇,我们是否有可能从xml文件在控制台中打印值(例如本示例中的$ {log.location})?

我正在使用简单的Spring 4 MVC,而不是SpringBoot,下面是我正在使用的slf4j和logback版本:

<version.slf4j>1.6.4</version.slf4j>
<version.logback>1.0.1</version.logback>
<java-version>1.8</java-version>

1 个答案:

答案 0 :(得分:1)

<property>

具有选项“ 文件”和“ 资源”。

示例

<property resource="logging.properties"/> <!-- Path relavtive to classpath. E.g. file in src/main/resources or within .jar when built -->

<property file="logging.properties"/> <!-- File in root folder of project or folder where your .jar is located -->

对于您描述的情况(具有完全限定的路径),它可以与“ 文件”选项一起使用。

对于3.问题:是的,documentation指出“变量替换可以在配置文件中可以指定值的任何位置进行。”

示例

属性文件:

randomProperty=Hello

Logback.xml:

<pattern>${randomProperty} %date %level [%thread] %X{username} [%file:%line] %msg%n</pattern>

其他提示:

<configuration debug="true">

将在初始化日志记录时向您显示更多有关实际问题的信息。