如何使用slf4j logger将日志打印到文件以进行调试和其他级别

时间:2015-01-23 17:32:13

标签: java maven logging slf4j

我知道这个问题之前已被问及我正在阅读的其他答案我拼凑了一堆信息,但我仍未能达到我想要的效果。

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

更新: 该程序能够在根文件夹中创建一个文本文件并写入它。我还将编写代码添加到下面的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>
&#13;
&#13;
&#13;

src / main / resources&gt;&gt; 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&gt;&gt; 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");
   }

}

1 个答案:

答案 0 :(得分:1)

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

第二个命名问题:我建议你使用logback作为绑定,因为它在配置上非常灵活。见例如。 time based rolling