java - 如何使用 slf4j 记录器将日志打印到文件以进行调试和其他级别

标签 java maven logging slf4j

我知道这个问题之前已经被问过,并且从我正在阅读的其他回复中我拼凑了一堆信息,但我仍然未能实现我想要的。

我的目标是让我的 maven/java 项目每天将信息、调试、跟踪等级别的日志打印到新文件中。理想情况下,我想要 jan21.info.log、jan22.info.log、jan21.debug.log、jan22.debug.log...等你明白了,但我什至无法让我的程序打印到文件。我已在下面粘贴了我的 pom.xml、java 类和 log4j.properties 文件。顺便说一句,Slf4j 是一个要求。正如你所知,这是非常非常基本的,但由于某种原因我无法让它工作。非常感谢这里的任何帮助。提前致谢。

更新: 该程序能够在根文件夹中创建一个文本文件并对其进行良好的写入。我也将写入代码添加到下面的 App.java 中。

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>com.mycompany.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>my-app</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>1.7.5</version>
	</dependency>
	 <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.5</version>
    </dependency>
 
  </dependencies>
  
   <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.2.1</version>
                <configuration>
                    <mainClass>com.mycompany.app.App</mainClass>
                </configuration>
            </plugin>
   		</plugins>
 	</build>
</project>

src/main/resources >> log4j.properties

# Root logger option 
log4j.rootLogger=DEBUG, file 
# File appender 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n 
log4j.appender.file.File=/Users/ajanis/DR/GS/tmp/my-app/myoutput.log 
log4j.appender.file.MaxFileSize=100KB 

src/main/java >> App.java

package com.mycompany.app;

import java.io.FileNotFoundException;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;

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

public class App 
{
   private static Logger log = LoggerFactory.getLogger(App.class);

   public static void main (String [] arg) throws FileNotFoundException, UnsupportedEncodingException
   {
      System.out.println("\n\nBegin\n");
      log.info("hello info");
      log.debug("debug");

      PrintWriter writer = new PrintWriter("blah.txt", "UTF-8");
      writer.println("The first line");
      writer.println("The second line");
      writer.close();

      System.out.println("\nEnd");
   }

}

最佳答案

首先 - 看起来您想使用 log4j 进行日志记录,但您没有适当的 bindingslf4j-log4j12-1.7.10.jar。请注意,您需要删除现有的 slf4j-simple 依赖项!

其次是您的命名问题:我建议您使用 logback 作为绑定(bind),因为它的配置非常灵活。参见例如。 time based rolling .

关于java - 如何使用 slf4j 记录器将日志打印到文件以进行调试和其他级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28115481/

相关文章:

java - 在手机(Java)上开发,是否使用SDK?

java - Listview 按钮点击监听器不工作

java - 使用配对键将三元组列表分组到映射中

linux - 在 RHEL-7 中将 Auditd.log 数据重定向到 rsyslog

javascript - winstonjs 获取使用 winston.createLogger(...) 创建的记录器

java - 正确使用 Java "assert"关键字

java - 第谷跳过测试

maven - 是否可以使用 mvn 命令访问 pom.xml 文件内的标签?

java - Spring boot 找不到 PropertySource : label not found

python - 在 Python 中使用 RotatingFileHandler 按日期轮换日志