无法使用slf4j + logback

时间:2018-03-08 14:22:00

标签: java maven logback slf4j

首先,你必须知道我是初学者的回溯所以也许我犯了一个非常愚蠢的错误而没有注意到它。那么也许这个问题可能已经解决了,但只要我搜索过,我就找不到任何东西

但是当我尝试配置我的日志文件时,我遇到了问题。 我希望在我的项目的根目录上有一个名为logs的存储库,其中包含按时间排序的所有日志(以及限制大小)。所以我看到logback正在使用我想要的SizeAndTimeBasedRollingPolicy

所以经过对谷歌的一些研究后,我的配置文件(logback.xml)是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="ROLLING"
    class="ch.qos.logback.core.rolling.RollingFileAppender">
    <file>SG.log</file>
    <rollingPolicy
        class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
        <!-- rollover daily -->
        <fileNamePattern>mylog-%d{yyyy-MM-dd}.%i.txt</fileNamePattern>
        <!-- each file should be at most 100MB, keep 60 days worth of history, 
            but at most 20GB -->
        <maxFileSize>100MB</maxFileSize>
        <maxHistory>60</maxHistory>
        <totalSizeCap>20GB</totalSizeCap>
    </rollingPolicy>
    <encoder>
        <pattern>%msg%n</pattern>
    </encoder>
</appender>
<root level="DEBUG">
    <appender-ref ref="STDOUT" />
    <appender-ref ref="FILE" />
    <appender-ref ref="ROLLING" />
</root>
</configuration>

我的pom.xml也是如此:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>testLog</groupId>
<artifactId>testLog</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <version>1.3.0-alpha4</version>
    </dependency>
    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-core</artifactId>
        <version>1.3.0-alpha4</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.8.0-beta1</version>
    </dependency>
</dependencies>
<build>
    <sourceDirectory>src</sourceDirectory>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

当然,我打电话给记录器:

package testLog;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Main {
   private static Logger logger = LoggerFactory.getLogger(Main.class);

   public static void main(String[] args) {
       // TODO Auto-generated method stub
       logger.debug("toto");
       logger.info("ela ela");
       logger.warn("ce je ne sais quoi ");
       logger.error("ce dont du ciel qui la rend belle");
   }
}

所以现在我可以告诉你我的问题:没有生成日志文件。 你知道问题是什么吗?

感谢您的时间。

2 个答案:

答案 0 :(得分:0)

我认为它应该在你项目的根目录下,以确保它是生成的,而不是:

<file>SG.log</file>

尝试提供绝对路径,例如

<file>/Users/username/logs/SG.log</file>

确保创建了目录树状结构。 通过这种方式,您可以知道在何处查找文件,并确保实际创建该文件。

如果生成良好,请执行:

<file>logs/SG.log</file>

它应该转到你的日志目录(手动创建目录以确保,我不认为logback会创建它)

修改

您可以将根记录器更改为

<root level="DEBUG">
    <appender-ref ref="ROLLING" />
</root>

可能其中一个STDOUTFILE正在劫持日志

<强> EDIT2

最后一想我能想到哪些与我的配置不同的是:

  • 我的logback.xml文件以这种方式启动

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE configuration>
    <configuration debug="true">
    
  • 我为编码器设置了类

    <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
        <Pattern>%msg%n</Pattern>
    </encoder>
    

“ce don du ciel qui la rend belle”:)

答案 1 :(得分:0)

所以我找到了问题的解决方案(出现了另一个问题,但很快就会解决)

我不知道它是Bentaye给出的版本,还是我在类路径中添加了资源的事实,现在我有了回应!

神奇!

感谢大家,如果你已经尝试过:)