如何使用jar文件的文件appender?

时间:2015-09-26 09:25:51

标签: java logging

我在主程序中使用logback。我实现了logback.xml文件,如下所示:

<configuration>

  <appender name="ROLLING" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>E:\mylog.txt</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- rollover daily -->
      <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
      <timeBasedFileNamingAndTriggeringPolicy
            class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
        <!-- or whenever the file size reaches 100MB -->
        <maxFileSize>100MB</maxFileSize>
      </timeBasedFileNamingAndTriggeringPolicy>
    </rollingPolicy>
    <encoder>
      <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss", UTC} [%thread] %-5level %logger{36} %L - %msg%n</Pattern>
    </encoder>
  </appender>

  <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
    <encoder>
      <Pattern>%date{"yyyy-MM-dd'T'HH:mm:ss", UTC} [%thread] %-5level %logger{36} %L - %msg%n</Pattern>
    </encoder>
  </appender>

  <logger name="source.main.FileProcess" level="INFO" />
  <logger name="source.main.FileReadWrite" level="INFO" />
  <logger name="source.main.OperatorLoader" level="DEBUG" />
  <logger name="source.exception.ValidationException" level="INFO" />
  <logger name="source.validation.Validation" level="INFO" />


  <root level="debug">
    <appender-ref ref="ROLLING" />
    <appender-ref ref="STDOUT" />
  </root>
</configuration>

我的应用程序运行正常。但是当我将其转换为jar文件时,文件appender无法正常工作,日志只显示在控制台中。我使用此语句创建一个jar文件:

jar -cvfm app.jar manifest.txt source/main/MyApp.class

manifest.txt文件的内容如下:

Manifest-Version: 1.0
Main-Class: source.main.FileProcess
Class-Path: slf4j-api-1.7.7.jar logback-core-1.1.3.jar logback-classic-1.1.3.jar OperatorInterface.jar

有谁知道问题出在哪里?

1 个答案:

答案 0 :(得分:1)

在执行jar时尝试设置logback配置的路径:

java -Dlogback.configurationFile=PATH_TO_FILE -jar app.jar