CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Java >  Web 开发

在一个项目中我使用了两个LOG4J的配置,但我发现他们之间有冲突.(问题困扰很长时间了).

楼主myepoch(myepoch)2006-07-02 09:27:20 在 Java / Web 开发 提问

在一个项目中我使用了两个LOG4J对象,但我发现他们之间有冲突.比如第一个我输出信息到控制台,第二个我输出信息到文件,但是当我执行第二个LOG4J的时候,在控制台上也显示出了信息.  
   
  第一个我是通过配置文件进行配置的,第二个我是在程序运行的时候进行配置的.  
  代码如下:  
   
  -------------------------------  
  通过配置文件的LOG4J:  
  log4j.rootLogger=INFO,console,R  
   
  log4j.category.org.apache=OFF  
  log4j.category.modeler=OFF  
  log4j.category.http11=OFF  
   
  log4j.appender.console=org.apache.log4j.ConsoleAppender  
  log4j.appender.console.layout=org.apache.log4j.PatternLayout  
  log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd   HH:mm:ss:SSS}   [%t]   %-5p   %c   -   %m%n  
  ----------------------------  
  通过程序执行的LOG4J:  
  import   org.apache.log4j.*;  
  import   test.Common;  
   
  public   class   SEM02Log   extends   PatternLayout   {  
   
  private   static   Logger   loggers   =   Logger.getLogger(SEM02Log.class.getName());                                                            
   
  static   {    
  String   strDateStatic   =   Common.getData("other.logtxt");              
          PatternLayout   layout   =   new   PatternLayout();      
          layout.setConversionPattern("%m%n");                    
           
          DailyRollingFileAppender   appender   =   null;        
  try   {  
  appender   =   new   DailyRollingFileAppender(layout,strDateStatic,"yyyyMMdd'.log'");      
                   
  }   catch   (Exception   e)   {  
  e.printStackTrace();  
  }  
   
  loggers.addAppender(appender);                  
  loggers.setLevel((Level)Level.INFO);      
  }  
   
   
  public   static   void   outputFile   (String   Id,  
  String   Browser,  
  int   Unique)   throws   Exception{  
   
  String   str   =   Id   +   " "   +Browser   +   " "   +   Unique;      
          loggers.info(str);                                                                                  
  }  
  }  
   
  -----------------------------------------------  
  运行项目的时候第一个LOG4J就执行了,当我运行项目中的一个模块后,第二个LOG4J也运行了,但是在第二个LOG4J并没有配置输出控制台的语法.而他在运行的时候却执行了第一个LOG4J中的log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd   HH:mm:ss:SSS}   [%t]   %-5p   %c   -   %m%n  
   
  请问原因是什么,我如何解决这种矛盾呢 问题点数:30、回复次数:4Top

1 楼szz1981()回复于 2006-07-02 10:09:30 得分 10

看看这两个的版本是不是一致  
  如果一致就删除一个了  
  如果不一致,就把版本底的给删除Top

2 楼myepoch(myepoch)回复于 2006-07-02 10:19:52 得分 0

楼上的朋友你没有理解我的意思啊.  
  不是什么版本的问题,我只用一个LOG4J版本.我的意思是在我的项目中同时配置了两个LOG4J,一个通过配置文件将信息输出到控制台,一个通过程序,将信息输出到文件.  
   
  注意,根据项目的需要我必须配置两个LOG4J,是不能配置一个的.Top

3 楼myepoch(myepoch)回复于 2006-07-02 14:08:28 得分 0

难道真的很难吗?Top

4 楼echomyf(ECHO)回复于 2006-07-02 17:35:59 得分 20

我真的不太理解你为什么非要配置两个log4j文件?  
  你在第一个配置里边全部搞定不就ok了?  
  你现在是不是不能动第一个配置文件?而又想增加自己的log输出?  
  如果你的log输出是特殊的配置,可以参考高级配置中的内容,使用字符串匹配指定自己的log输出,那样你就可以使用debug来输出,而对于debug的输出信息,在第一个配置中是不会输出的。Top

相关问题

关键词

得分解答快速导航

  • 帖主:myepoch
  • szz1981
  • echomyf

相关链接

  • CSDN Java频道
  • Java类图书
  • Java类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo