我的应用程序使用记录有两种方式.... 1)程序化2)的log4j.xml 我有两个(1使用程序化和其他使用的log4j.xml中创建日志文件)位置。的Log4j:有趣的问题,需要解决
程序化的方式(多了一个属性文件中,所有的东西都提像日志级别和所有....让say..thorugh这...文件越来越created..name为“SAS_VP。日志“):
Enumeration loggers = Logger.getRootLogger().getLoggerRepository().getCurrentLoggers();
......
Logger temp = (Logger)iter.next();
temp.setLevel(level);
的log4j.xml
<appender name="FILE" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="/LOGS/SAM/SAM_VJ.log"/>
<param name="Threshold" value="DEBUG"/>
<param name="MaxFileSize" value="10000KB"/>
<param name="MaxBackupIndex" value="10"/>
<param name="Append" value="false"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss,SSS} [%t] %5p [%F(% M):%L] %m%n"/>
</layout>
</appender>
<root>
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE"/>
</root>
问题:
日志级别,我设定编程覆盖 log4j.xml.Like中的log4j.xml日志级别设置的级别“调试”,并通过编程我已经设置了级别为“错误”,那么文件(SAM_VJ.log),它由创建log4j.xml只包含ERROR级别日志。
如何解决这个问题...我想...我的两个日志记录(编程和log4j)应该是独立的。
是否有任何的log4j中...如果我已经设置了一个包“com.sas”的日志级别为“调试”,那么没有人可以修改...像可变类型
<logger name="com.sam">
<priority value="DEBUG"/>
</logger>
寻找你的建议....
** @ Mark Bramnik:** **我的属性文件:** ###日志级别。 ###值{ALARM,ERROR,WARNING,TRACE,PRINT} 1.1.1 =错误
###日志目录1.1.2 =/LOGS/SAM/** Java代码:**枚举记录器= Logger.getRootLogger() .getLoggerRepository()getCurrentLoggers(); //它获取所有记录器
...... Logger temp =(Logger)iter.next(); temp.setLevel(电平); //设置的级别来自属性文件 – VJS 2011-12-27 07:01:43
** log4j.xml:** 我希望包“com.sas”下的代码总是按照log4j.xml中提到的日志级别来发送 \t <优先级值=” DEBUG“/> –
VJS
2011-12-27 07:04:26
**问题:** 这里通过Java代码....记录器为 ”com.sas“ 也被modified.I希望出现这种情况通过java代码,我不应该设置记录器级别“com.sas”...我如何将此传递给java代码....我不能看到任何API,我可以通过它获取记录器并在log4j中指定。 如果我以这种方式获得log4j.xml中指定的日志记录级别不应该得到改变.....我认为这不可能,因为您提到了...它通过java代码获取覆盖。 ... **任何解决方案... ** – VJS 2011-12-27 07:04:48