Tag: 日志记录

从多个线程进行Java日志记录的最佳实践?

我想要一个由管理数据的几个任务生成的诊断日志。 这些任务可能在多个线程中。 每个任务都需要将一个元素(可能带有子元素)写入日志; 进去快点出去。 如果这是一个单任务的情况,我会使用XMLStreamWriter,因为它似乎是简单/function的最佳匹配,而不必在内存中保存一个膨胀的XML文档。 但这不是一个单任务的情况,我不确定如何最好地确保这是“线程安全”,其中“线程安全”在这个应用程序中意味着每个日志元素应该正确和连续地写入日志(一个后另一个,不以任何方式交错)。 有什么建议么? 我有一个模糊的直觉,要走的路是使用一个日志元素队列(每个元素都可以快速生成:我的应用程序正在忙于执行对性能敏感的实际工作),并且有一个单独的线程来处理日志元素并将它们发送到文件,以便日志记录不会中断生成器。 日志记录不一定必须是XML,但我确实希望它是结构化的和机器可读的。 编辑:我把“threadsafe”放在引号中。 Log4j似乎是一个显而易见的选择(对我来说很新但对社区来说很老),为什么重新发明轮子……

为什么我们在tomcat logging.properties中需要两次写处理程序?

来自docs: handlers = 1catalina.org.apache.juli.FileHandler, \ 2localhost.org.apache.juli.FileHandler, \ 3manager.org.apache.juli.FileHandler, \ java.util.logging.ConsoleHandler .handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler 我没有找到任何解释为什么需要写处理程序和后.handlers? 类似属性文件是否有通用规则? 谢谢。

错误“java.lang.NoSuchMethodError:org.jboss.logging.Logger.getMessageLogger”

我正在尝试使用spring + hibernate构建1个混合测试项目。 部署后…我对此错误感到沮丧..并在谷歌搜索但仍未使其工作… Caused by: java.lang.NoSuchMethodError: org.jboss.logging.Logger.getMessageLogger(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Object; at org.hibernate.annotations.common.util.impl.LoggerFactory.make(LoggerFactory.java:34) at org.hibernate.annotations.common.Version.(Version.java:34) at org.hibernate.annotations.common.reflection.java.JavaReflectionManager.(JavaReflectionManager.java:73) at org.hibernate.cfg.AnnotationConfiguration.reset(AnnotationConfiguration.java:311) at org.hibernate.cfg.Configuration.(Configuration.java:216) at org.hibernate.cfg.Configuration.(Configuration.java:220) at org.hibernate.cfg.AnnotationConfiguration.(AnnotationConfiguration.java:168) 尝试jboss-logger 3.1.0.CR2,以及各种不同的jboss-logging,不同版本。 怎么解决? 下面是附加的图片,看看是否存在任何版本的合并或任何依赖缺失…