我在我的logback.xml配置文件中有这个添加器:
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>classpath:addressbookLog.log</file> <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> <Pattern>%d{dd MMM yyyy;HH:mm:ss} %-5level %logger{36} - %msg%n </Pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> <FileNamePattern>classpath:addressbookLog.%i.log.zip</FileNamePattern> <MinIndex>1</MinIndex> <MaxIndex>10</MaxIndex> </rollingPolicy> <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> <MaxFileSize>2MB</MaxFileSize> </triggeringPolicy> </appender>
因此我指定了通过classpath以相对方式在其中打印日志的文件的路径,但是它不起作用,没有创建和写入文件addressbookLog.log。它仅适用于/home/andrea/…/resources/addressbookLog.log等绝对路径,您对如何使其与类路径一起使用有任何想法吗?
在第3章:配置的logback:变量替换告诉我们的各种方式来引用变量定义外,如system properties和classpath。
system properties
classpath
重要的配置是创建一个单独的文件,其中将包含所有变量。我们也可以引用类路径上的资源而不是文件。例如
<configuration> <property resource="resource1.properties" /> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <!-- Here we can refer to the variable defined at the resource1.properties --> <file>${USER_HOME}/myApp.log</file> <encoder> <pattern>%msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="FILE" /> </root> </configuration>
USER_HOME=/path/to/somewhere
请注意,resource1.properties是的资源classpath。
resource1.properties
您可以在第3章:Logback配置:变量替换中参考完整版本。希望对您有所帮助。