Tag: logging

每个级别定义1个回溯文件

我想定义一个能够执行以下操作的logback配置文件: 在debug.log中记录DEBUG(和更高版本)的东西 在info.log中记录INFO(和更高版本)的东西 也就是说,当我打电话时: logger.warn(“blah”); // Logs to both info.log and debug.log logger.debug(“bleh”); // Logs to debug.log only 可能吗 ? 我试过这样的东西,但似乎当logback遇到多个标签时,它只需要最后一个: ${LOGS_FOLDER}/info.log %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} – %msg%n ${LOGS_FOLDER}/debug.log %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} – %msg%n 这里,info.log包含调试级日志:( 请注意,我想在每个包上应用此行为。

如何使用logback防止日志轰炸?

我不确定“轰炸”一词是否合适。 通过轰炸,我的意思是使用相同的内容(消息和args)多次发生日志。 例如,拒绝服务附加可能会导致未经身份validation的用户尝试访问某些API的日志警告。 日志: [03-29 11:26:01.000] missing token [03-29 11:26:01.001] missing token [03-29 11:26:01.005] missing token … overall 100000 times 我试图解决的问题是防止日志非常大。 尺寸是个问题。 此外,由于重复消息的数量过多,可能无法看到其他重要消息。 我希望能够防止这样的日志轰炸,并有一些汇总的消息,如: [03-29 11:26:01.000] missing token [03-29 11:26:06.000] missing token [silenced. Overall 100000 times] 所以,我在这里寻找2个function: 沉默太重复的日志。 显示沉默日志的总结。 知道是否以及如何使用logback完成此操作? 也许另一个日志工具可以支持这个? 谢谢。

记录multithreading应用程序中的活动

我在Java中有一个分层应用程序,它有一个multithreading数据访问层,可以从不同的点调用。 对该层的单次调用可能会产生多个线程来并行化对数据库的请求。 我正在寻找的是一个日志工具,它允许我定义由各种线程组成的“活动”。 因此,数据访问层中的相同方法应根据其调用者记录不同的输出。 将不同输出分组以总结操作的总成本的能力也很重要。 虽然应用程序是Java语言,但语言不是限制; 我需要的是设计指南,以便最终实现它。 我们目前正在使用log4j,但无法从中获取此行为。

如何使用Log4j和Storm Framework将日志写入文件?

我在使用log4j在风暴中记录到文件时遇到了一些问题。 在提交我的拓扑之前,即在我的main方法中,我编写了一些日志语句并使用以下命令配置了记录器: PropertyConfigurator.configure(myLog4jProperties) 现在,当我在eclipse中使用我的可执行jar运行我的拓扑时 – 它正常工作并且正在创建日志文件。 要么 当我使用“java -jar MyJarFile someOtherOptions”运行我的可执行jar时,我可以看到log4j正在配置并且文件正确形成并且在两个文件和控制台上都进行了日志记录(在我的log4j.properties中定义) 但是,当我使用“风暴jar MyJarFile MyMainClass someOtherOptions”运行相同的jar时,它无法创建并登录到除控制台之外的任何文件。 我正在谈论我在提交拓扑之前打印的日志。 有没有办法在使用storm时将我的语句记录在文件中? 我不一定要使用org.apache.log4j 。

是否有一个强大的syslog的java.util.logging处理程序实现?

我正在考虑将第三方Java应用程序连接到我们的日志聚合/分析解决方案(可能是Splunk,但我们还没有完成我们的选择)。 将Splunk代理挂钩到syslog似乎是最容易的,所以我正在寻找一种方法将应用程序日志重定向到服务器上的本地syslog守护程序。 Java应用程序使用java.util.logging,遗憾的是它没有开箱即用的syslog处理程序(我相信log4j确实如此)。 有没有经过validation的库可以做到这一点? 日志负载不是很大(每个进程可能每分钟10-20条消息,每个主机最多6个进程)但我关心的是可靠性和持久性(例如当守护进程停止时会发生什么?…)。 任何帮助,将不胜感激…

如果编译器可能内联日志记录调用,为什么还要在记录API时使用lambda表达式

许多日志框架(例如,log4j)允许您将lambda表达式而不是String s传递给日志记录API。 参数是如果字符串对构造特别有表现力,那么字符串结构可以通过lambda表达式延迟执行。 这样,只有在系统的日志级别与调用的日志级别匹配时才构造字符串。 但是,鉴于现代编译器会自动执行大量内联方法,是否真的有必要以这种方式使用lambda表达式? 我将在下面提供一个简化示例来certificate这一问题。 假设我们的传统日志记录方法如下所示: void log(int level, String message) { if (level >= System.logLevel) System.out.println(message); } // …. System.logLevel = Level.CRITICAL; log(Level.FINE, “Very expensive string to construct …” + etc); 让我们假设FINE小于CRITICAL ,因此,尽管构造了一个昂贵的字符串,但由于没有输出消息,所以不是。 Lambda日志记录API可以帮助解决这种情况,以便在必要时仅对字符串进行评估(构造): void log(int level, Supplier message) { if (level >= System.logLevel) System.out.println(message.apply()); } // …. System.logLevel = Level.CRITICAL; log(Level.FINE, () […]

Mac上的logback返回问号而不是单词

我刚开始使用logback来记录在glassfish3 AS上运行的Java项目,我注意到了一些奇怪的事情。 这段代码 LOG.error(“Вычисление {} уже произведено.”, calc); 如果我在Windows上运行我的应用程序,则生成正常的预期输出。 但如果我在Mac上的配置相同,我会有问号而不是文字,如下所示: 15:37:29.083 ERROR rggcTotalNachController – ?????????? [id=8871] ??? ???????????. 我的logback配置是: ../logs/logback.log %d{HH:mm:ss.SSS} %-5level %logger{35} – %msg%n 有人可以告诉我,我做错了什么?

使用log4j创建包含日期的日志文件

我正在使用下面的代码编写我的日志文件,但它将文件存储为QueryLog.log 。 我错过了什么吗? 检查我的log4j.properties文件的代码 log4j.logger.org.hibernate=INFO log4j.logger.org.hibernate.SQL=DEBUG log4j.logger.org.hibernate.type=TRACE log4j.logger.org.hibernate.hql.ast.AST=info log4j.logger.org.hibernate.tool.hbm2ddl=warn log4j.logger.org.hibernate.hql=debug log4j.logger.org.hibernate.cache=info log4j.logger.org.hibernate.jdbc=debug log4j.rootLogger = DEBUG, FILE log4j.appender.FILE=org.apache.log4j.DailyRollingFileAppender log4j.appender.FILE.DatePattern=’.’yyyy-MM-dd-a log4j.appender.FILE.File=log4j/QueryLog.log log4j.appender.FILE.layout=org.apache.log4j.PatternLayout log4j.appender.FILE.layout.conversionPattern= %d{HH:mm:ss} %-5p %c – %m%n 我使用过的链接: http://www.tutorialspoint.com/log4j/log4j_logging_files.htm http://www.codejava.net/coding/configure-log4j-for-creating-daily-rolling-log-files

log4j的优点

log4j优于设置System.out和System.err输出到日志文件的优势是什么?

如何关闭Stanford CoreNLP Redwood日志记录?

如何关闭Stanford CoreNLP消息(见post末尾)? 我首先尝试在log4j.properties中设置log4j.category.edu.stanford=OFF ,但这没有帮助,所以我发现它显然使用了一个名为“Redwood”的非标准日志框架。 根据http://nlp.stanford.edu/nlp/javadoc/javanlp/有一个文档,但它受密码保护。 我尝试过RedwoodConfiguration.empty().apply(); 但这也无济于事。 记录消息: Adding annotator tokenize Adding annotator ssplit Adding annotator pos Loading default properties from tagger edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger Reading POS tagger model from edu/stanford/nlp/models/pos-tagger/english-left3words/english-left3words-distsim.tagger … done [1,2 sec]. PS: Redwood.hideAllChannels(); 也行不通。 然而,以下内容会抑制我自己的日志记录声明(但不是来自StanfordCoreNLP的声明): RedwoodConfiguration.empty().apply(); Redwood.log(“test redwood”); 解决方案好的,StevenC是对的,毕竟它不是记录语句,但是默认的初始化消息被写入stderr,我没想到看到Stanford拥有它自己的日志框架然后不使用它:-) 无论如何,他的提示让我发现了这个解决方案: // shut off the annoying intialization messages RedwoodConfiguration.empty().captureStderr().apply(); nlp = new StanfordCoreNLP(myproperties); // […]