java - Jboss 和 Spring 中的 Logback 经典

标签 java spring maven jboss logback

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

我已将 logback.xml 文件放置在代码的 resources 文件夹中,并将 logback-test.xml 文件放置在 test/resources 中。

我使用的 Activity 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>

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

最好的, 亨里克

最佳答案

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

Chapter 4: Appenders提到 FileAppenderRollingFileAppender 属性为

file *String* The name of the file to write to. If the file does not exist, it is created. On the MS Windows platform users frequently forget to escape back slashes. For example, the value c:\temp\test.log is not likely to be interpreted properly as '\t' is an escape sequence interpreted as a single tab character (\u0009). Correct values can be specified as c:/temp/test.log or alternatively as c:\temp\test.log. The File option has no default value. If the parent directory of the file does not exist, FileAppender will automatically create it, including any necessary but nonexistent parent directories.

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>

希望这会有所帮助。

关于java - Jboss 和 Spring 中的 Logback 经典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15288212/

相关文章:

java - 从 Java 中的对象数组中删除对象

java - 在处理中获取一条线沿圆的切线移动

java - 使用 Spring Integration 使 ssl-context-support 有条件地使用 tcp-connection-factory

java - 由于属性文件位置类型,应用程序或集成测试 Spring 上下文创建失败

java - 大型 Maven 项目

java - 查看dependencyManagement的依赖树

Java自动适应Windows 7字体大小调整

java - 如何在 Joda Time daysBetween 中包含开始日期?

java - 连接本地容器docker

java - HelloAnalytics 代码的 Maven 构建失败