Tag: log4j

log4j – 为不同的包/类设置不同的日志级别

我使用log4j logigng,我想打印所有类/选定的软件包中的所有logger.debug语句。 我如下设置cfg> log4j.category.my.pkg=info log4j.category.my.pkg.ab.class1=debug 但仍然只有信息消息显示.. 这是不是正确的方法?

我如何在运行时访问configuration的Log4J appender?

我想在启动时configuration一个appender,然后根据需要dynamic添加并从各种logging器中删除它。 我宁愿有log4jconfiguration这个appender本身,只是在需要的时候抓住一个引用。 如果这是不可能的,我将不得不自己实例化appender,并坚持下去。

外部log4j.xml文件

我想在jar之外的文件系统上使用log4j.xml文件来运行jar,就像这样: java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=log4j.xml argToJar1 argToJar2 我也试过了: java -jar MyJarName.jar -cp=/opt/companyName/pathToJar/ log4j.configuration=/opt/companyName/pathToJar/log4j.xml argToJar1 argToJar2 log4j.xml文件与jar(/ opt / companyName / pathToJar /)位于同一目录中,但仍然收到标准警告消息: log4j:WARN No appenders could be found for logger (org.apache.axis.i18n.ProjectResourceBundle). log4j:WARN Please initialize the log4j system properly. 是否有可能在jar外的configuration文件,或者我必须打包与jar? TIA

在log4j中configurationRollingFileAppender

我正在研究一组Web服务,我们希望每天都有一个轮换的日志。 我试图从log4j额外的同伴工作,以获得org.apache.log4j.rolling.RollingFileAppender ,因为文档build议这是最适合生产环境。 我在类path上同时具有主要的log4J库( log4j-1.2.15.jar )和log4j额外的库( apache-log4j-extras-1.1.jar )。 我在log4j.properties文件中为appenderconfiguration了以下configuration: ### SOAP Request Appender log4j.appender.request=org.apache.log4j.rolling.RollingFileAppender log4j.appender.request.File=SOAPmessages.log log4j.appender.request.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy log4j.appender.request.RollingPolicy.ActiveFileName =SOAPmessages-%d.log log4j.appender.request.RollingPolicy.FileNamePattern=SOAPmessages-%d.log.zip log4j.appender.request.layout = org.apache.log4j.PatternLayout log4j.appender.request.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L – %m%n 但是,当我在debugging模式下使用log4j启动Web服务时,出现以下错误消息: log4j: Parsing appender named "request". log4j: Parsing layout options for "request". log4j: Setting property [conversionPattern] to [%d{ABSOLUTE} %5p %c{1}:%L – %m%n]. log4j: End of parsing for "request". […]

Javalogging:显示调用者的源代码行号(不是日志助手方法)

Java的众多(叹息…)日志框架都能很好地显示创build日志消息的方法的源文件名的行号: log.info("hey"); [INFO] [Foo:413] hey 但是如果在两者之间有一个辅助方法,那么实际的调用者将是辅助方法,而且这不是太丰富。 log_info("hey"); [INFO] [LoggingSupport:123] hey 当找出打印源位置时,是否有办法告诉日志系统从调用堆栈中删除一帧? 我想这是特定的实现。 我需要的是通过Commons Logging的Log4J,但我有兴趣了解其他选项。

log4j.properties文件 – 同一类中的多个logging器

我想在我的应用程序中有两个不同的log4jlogging器,并且在他们写入他们的尊重日志的内容之间没有“重叠”。 例如: Logger1写入与一组系统事件有关的INFO事件 Logger2写入与另一组系统事件有关的INFO事件 日志中不应出现两次 我的log4j.properties如下所示: log4j.rootLogger=DEBUG, stdout log4j.logger.org.apache=DEBUG, stdout log4j.logger.xdasLogger=DEBUG, xdas log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%m%n log4j.appender.xdas=org.apache.log4j.ConsoleAppender log4j.appender.xdas.layout=org.apache.log4j.PatternLayout log4j.appender.xdas.layout.ConversionPattern=%d %-5p %c – %m%n 我的Java代码如下: public static void main(String[] args) { PropertyConfigurator.configure(Client.class .getResource("/log4j.properties")); xdasLogger = Logger.getLogger("xdasLogger"); logger = Logger.getLogger(Client.class); logger.info("normal"); xdasLogger.info("xdas"); } 但是我的控制台输出如下: normal 2012-06-28 09:52:44,580 INFO xdasLogger – xdas xdas 请注意,“xdas”由logger和xdasLogger logger ,这是不可取的。 有谁知道我需要把我的log4j.properties更改控制台输出到以下更改什么更改? normal 2012-06-28 […]

Log4j:为什么根logging器收集所有日志types而不考虑configuration?

我有一个问题,即使我在根标记中指定错误级别,指定的appender会将所有级别(debug,info,warn)logging到文件中,而不pipe设置如何。 我不是一个log4j专家,所以任何帮助表示赞赏。 以下是关于这个主题的更多信息: 我已经检查log4j.properties的类path(没有),除了log4j.xml 这里是log4j.xml文件: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'> <!– ============================== –> <!– Append messages to the console –> <!– ============================== –> <appender name="console" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out" /> <layout class="org.apache.log4j.PatternLayout"> <!– The default pattern: Date Priority [Category] Message\n –> <param name="ConversionPattern" value="[AC – %5p] [%d{ISO8601}] [%t] [%c{1} – […]

Log4j 2.0和SLF4J以及Java日志框架永无止境的未来

所以我今天刚刚发现Log4J 2.0现在正在积极开发中,有一个alpha版本,据说取代了logback。 现在在我的应用程序,我有接近4或许更多的日志框架: Java Util日志logging log4j的 SLF4J logback(忽略感谢提供黑客的maven) 公共日志logging(忽略感谢提供黑客的maven) 而tomcat有它自己的JULI适配器 我一直在使用log4j(1.2.x),坦率地说,我只是不需要更新的人的function ,但我最近试图切换到SLF4J,主要是因为我不想重写我复杂的log4jconfiguration文件到一个新的格式 (logback)。 现在我的问题是,我应该针对的是SLF4J是log4j 2.0未来的正确select。 似乎我应该坚持使用旧的log4j( 1.2.x ),因为它是最低的共同点? 更新:在进一步检查log4j 2.0而非常类似的情况下,它的configuration与log4j 1.2不兼容。 看起来像logback是最好的select。

如何获得使用log4j的SLF4J“Hello World”?

SLF4J的“Hello World”例子对我来说不起作用。 我想这是因为我添加了slf4j-log4到我的类path。 我应该直接configurationlog4j让hello世界起作用吗? log4j:WARN No appenders could be found for logger (HelloWorld). log4j:WARN Please initialize the log4j system properly. log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 更新 :我添加了log4j初始化,它仍然无法正常工作: public static void main(String[] params) { org.apache.log4j.Logger.getRootLogger().addAppender(new ConsoleAppender()); Logger logger = org.slf4j.LoggerFactory.getLogger(TestBase.class); logger.info("Hello World"); } 我得到: log4j:ERROR No output stream or file set for the appender named […]

我如何testing与junit log4jlogging了一个警告?

我正在testing一个方法,当出现错误时会logging警告并返回null。 就像是: private static final Logger log = Logger.getLogger(Clazz.class.getName()); …. if (file == null || !file.exists()) { // if File not found log.warn("File not found: "+file.toString()); } else if (!file.canWrite()) { // if file is read only log.warn("File is read-only: "+file.toString()); } else { // all checks passed, can return an working file. return file; […]