2013-04-29 56 views
1

在这里我在Netbeans中使用独立应用程序中的log4j API。日志正在控制台上打印,但不在File.Log4j文件中存在于源文件夹中。请帮助我! 下面是我的log4j.properties文件Log4j:日志在控制台上显示,但文件没有得到更新

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1}\:%L - %m%n 
log4j.appender.file.File=E:\\Final\\Testing123.log 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.DatePattern`enter code here`='.'yyyy-MM-dd 
log4j.logger.testing=DEBUG, stdout, file 
log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1}\:%L - %m%n 
log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.Target=System.out 

及以下就是我使用它的类。

public class Test { 
    protected static Logger logger = LoggerFactory.getLogger(Testing.class.getName()); 

    public static void main(String[] args) { 

     logger.debug("Test Log1"); 
     Test t = new Test(); 
     logger.debug("Test Log2"); 
     //t.setLogPropertyFile(); 
     logger.debug("Test Log3"); 
     t.testthis(); 
     logger.debug("Test Log4"); 
    } 

    public void testthis(){ 
     this.logger.debug("Test Log"); 
     this.logger.info("Test Log"); 
     this.logger.warn("Test Log"); 
     this.logger.error("Test Log"); 
    } 

回答

2

它看起来像你的问题是在这里:

log4j.appender.file.DatePattern`enter code here`='.'yyyy-MM-dd 

可能复制/粘贴的东西,但它应该是这样的:

log4j.appender.file.DatePattern='.'yyyy-MM-dd 

此外,它的一个更容易看看发生了什么,如果你组织配置文件:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1}\:%L - %m%n 

log4j.appender.file=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.file.File=E:\\Final\\Testing123.log 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1}\:%L - %m%n 
log4j.appender.file.DatePattern='.'yyyy-MM-dd 

log4j.logger.testing=DEBUG, stdout, file 

----编辑----

如果作为独立的Java应用程序运行,则需要在启动时配置log4j框架。您可以在the documentation配置部分找到关于此的信息。特别是,因为你试图用一个属性文件,你需要做这样的事情(直接从文档借用):

import com.foo.Bar; 

import org.apache.log4j.Logger; 
import org.apache.log4j.PropertyConfigurator; 

public class MyApp { 

    static Logger logger = Logger.getLogger(MyApp.class.getName()); 

    public static void main(String[] args) { 


    // BasicConfigurator replaced with PropertyConfigurator. 
    PropertyConfigurator.configure(args[0]); 

    logger.info("Entering application."); 
    Bar bar = new Bar(); 
    bar.doIt(); 
    logger.info("Exiting application."); 
    } 
} 
+0

嗨,我尝试了用this..but取代旧的仍然没有工作。这里的日志文件正在创建,但没有他正在写入它..空白:-( – Rohan 2013-04-29 15:07:27

+0

对不起...文件也没有得到创建...只是日志来控制台.. – Rohan 2013-04-29 15:12:10

+0

你是确定你的log4j是从你的属性文件初始化的?你可能会看到默认的日志记录去stdout。试着改变你的记录器到:'log4j.logger.testing = ERROR,stdout,file'并确保只有错误信息被记录。 – Lucas 2013-04-29 15:16:15

相关问题