0

我正在做一个项目,我想我会尝试使用 logback-classic 进行调试和日志轮换。我在 Maven 上下文中使用它来构建和创建要部署在 JBoss 7.1 应用程序服务器中的 .war 文件。

我在代码的资源文件夹中放置了一个 logback.xml 文件,在 test/resources 中放置了一个 logback-test.xml。

我正在使用的活动 jar 是用于打印实际调试的 SLF4J。

public class MyClass extends MultiActionController {
  private Logger logger = LoggerFactory.getLogger(MyClass.class);

  public MyClass() {
    logger.debug("hello");
  }
}

当我在 Maven 本身的代码上运行 JUnit 测试时,它可以工作,但是在构建 .war 文件后,我在 STDOUT 中没有得到任何调试,也找不到创建的文件。

我知道我已经从配置文件中的 STDOUT 中删除了实际的日志记录,但是日志记录在哪里......

logback.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<configuration>
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">

        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>

        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <FileNamePattern>logs/myproject.%d{yyyy-MM-dd}.log</FileNamePattern>
            <MaxHistory>30</MaxHistory>
        </rollingPolicy> 

        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyMMdd HH:mm:ss.SSS} [%-5.5level] [%-25.25logger] %msg%n</pattern>
        </encoder>
    </appender>

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

我需要在 JBoss 实例中显式创建文件夹“logs”还是需要相对于它进行引用才能使其正常工作?还是我错过了什么?我需要将 logback.xml 文件放在 JBoss 实例中吗?

最好的,亨里克

4

2 回答 2

2

首先,您应该确保logback.xml位于类路径中,例如第 3 章:Logback 配置WEB-INF/classes/logback.xml中提到的。

4 章:Appenders提到FileAppenderRollingFileAppender属性为

file * String * 要写入的文件的名称。如果文件不存在,则创建它。在 MS Windows 平台上,用户经常忘记转义反斜杠。例如,值 c:\temp\test.log 不太可能被正确解释,因为 '\t' 是解释为单个制表符 (\u0009) 的转义序列。正确的值可以指定为 c:/temp/test.log 或 c:\temp\test.log。文件选项没有默认值。如果文件的父目录不存在,FileAppender 将自动创建它,包括任何必要但不存在的父目录。

logback.xml 的示例如下:-

<configuration>
  <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>logFile.log</file>
    <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
      <!-- daily rollover -->
      <fileNamePattern>logFile.%d{yyyy-MM-dd}.log</fileNamePattern>

      <!-- keep 30 days' worth of history -->
      <maxHistory>30</maxHistory>
    </rollingPolicy>

    <encoder>
      <pattern>%-4relative [%thread] %-5level %logger{35} - %msg%n</pattern>
    </encoder>
  </appender> 

  <root level="DEBUG">
    <appender-ref ref="FILE" />
  </root>
</configuration>

我希望这可能会有所帮助。

于 2013-03-08T07:12:40.287 回答
0

您需要定义文件标签(如前面的答案所述)。但是您还需要知道它是如何解释的。Logback 将其视为相对于它所使用的应用程序。所以如果你只使用

<file>logs/<myfile>.log</file>

logback应该在 JBoss 的根目录中创建一个“logs”文件夹(更具体地说:启动它的 .sh 脚本所在的文件夹)。从 JBoss 的根目录检查您是否可以从那里找到您的日志文件夹和文件。

于 2013-03-21T12:19:23.100 回答