Tag: logging

Java:如何将原始JSON记录为JSON,并避免在使用logback / slf4j进行日志记录期间转义

我在JAX-RS应用程序中使用带有Logback的SLF4J …我想以这样的方式登录到JSON,即我的消息不再被编码,而是原始打印到日志文件中: 目前它看起来像这样: {“@timestamp”:1363834123012,”@message”:”{\”text\”:\”From MLK to Barack Ob…\n\”}” 但我希望有这个: {“@timestamp”:1363834123012,”@message”: { “text “: “From MLK to Barack Ob…\n\} 原因是我想再次解析JSON并希望避免数据的转义。 我写了一个自定义的logback编码器,但我发现无法避免转义。 我可以传递对象进行回溯并根据对象的类型更改设置吗? 编辑:我找到了一种方式 – 不完全优雅 – 按照SSCE的要求: 在我的申请中 // SLF4J Logger private static Logger logger = LoggerFactory.getLogger(MyClass.class); // A logback? Marker private Marker foo = MarkerFactory.getMarker(“foo”); // Jackson ObjectMapper() ObjectMapper mapper = new ObjectMapper(); // Log […]

在Serializable Java类中使用Logger的正确方法是什么?

我在一个正在研究的系统中有以下( doctored )类, Findbugs正在生成一个SE_BAD_FIELD警告,我试图理解为什么它会在我按照我认为的方式修复之前说出来。 我感到困惑的原因是因为描述似乎表明我在类中没有使用其他非可序列化的实例字段,但bar.model.Foo也不是可序列化的并且以完全相同的方式使用(就我而言)可以告诉)但Findbugs没有发出任何警告。 import bar.model.Foo; import java.io.File; import java.io.Serializable; import java.util.List; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class Demo implements Serializable { private final Logger logger = LoggerFactory.getLogger(this.getClass()); private final File file; private final List originalFoos; private Integer count; private int primitive = 0; public Demo() { for (Foo foo : originalFoos) { this.logger.debug(…); […]

如何以编程方式告知Logback重新加载配置

我知道有一个reloadDefaultConfiguration()jmx操作,但是没有得到MBean的实例并调用此操作,是否有一个Logback api来重新加载默认配置(可选择指定一个日志配置文件路径)?

记录器应该是最终的和静态的吗?

可以从许multithreading访问类。 在这种情况下必须是记录器也是最终的和静态的吗? 谢谢。

log4j2 SMTP Appender:如何将以前的消息包含在另一个级别?

我正在使用log4j2-beta9,我有以下配置(部分): %d{dd-MM-yyyy HH:mm:ss,SSS} %5p %m%n 使用此配置,我收到的电子邮件只有一(1)个错误消息。 如何配置log4j2以接收1条错误消息和N条以前的LEVEL = INFO消息? 提前致谢。

登录lobgack时如何处理磁盘已满错误?

我正在使用slf4j + logback登录我们的应用程序。 早些时候我们使用jcl + log4j并最近移动了。 由于我们的应用程序中存在大量日志记录,因此在生产环境中磁盘可能已满。 在这种情况下,我们需要停止记录,应用程序应该正常工作。 我在网上发现的是我们需要轮询logback StatusManager以查找此类错误。 但是这将为应用程序添加一个依赖项和logback。 对于log4j,我发现我们可以创建一个Appender来停止在这种情况下登录。 这将再次导致与log4j的应用程序依赖。 有没有办法只用slf4j配置它,还是有其他机制来处理这个?

如何在Java或其他平台上创建logrotate友好文件编写器?

在Java中实现与logrotate兼容的文件编写器/记录器的最佳实践是什么? 目标是允许logrotate用于所有日志管理,而不是使用内置的日志API(Log4J等)的轮换/管理。 除了Java之外,我还有兴趣听取其他开发平台的评论/答案。

尽管isDebugEnabled为true,但log4j调试消息未在控制台中显示

我在我的项目中使用以下代码来使用log4j记录调试消息 private static final Logger LOG = Logger.getLogger(MyClass.class) // … if(LOG.isDebugEnabled()) { LOG.debug(“my log message”); } 我可以通过在写入调试消息的行添加断点来确认我的log4j配置是否正确,即LOG.isDebugEnabled()确实返回true 。 有趣的是,我的调试消息没有显示在我的IDE(IntelliJ)的控制台中,但是当将LOG.debug()更改为LOG.info() ,将按预期记录信息消息。 任何想法我应该寻找什么,以找出这里出了什么问题? 编辑:这是我的log4j.properties文件 log4j.appender.Stdout=org.apache.log4j.ConsoleAppender log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout log4j.appender.Stdout.layout.conversionPattern=%-5p [%d{dd.MM.yy HH:mm:ss}] %C{1} – %m [thread: %t]\n log4j.appender.Stdout.threshold=info log4j.appender.StandaloneFile=org.apache.log4j.RollingFileAppender log4j.appender.StandaloneFile.File=logs/standalone.log log4j.appender.StandaloneFile.MaxFileSize=5MB log4j.appender.StandaloneFile.MaxBackupIndex=20 log4j.appender.StandaloneFile.layout=org.apache.log4j.PatternLayout log4j.appender.StandaloneFile.layout.ConversionPattern=%-5p [%d{dd.MM.yy HH:mm:ss}] %C{1} – %m [thread: %t]\n log4j.appender.StandaloneFile.threshold=info log4j.rootLogger=info, Stdout, StandaloneFile log4j.logger.com.myPacke.package1=info, Stdout, StandaloneFile log4j.logger.com.myPacke.package2=DEBUG

登录DBCP

我正在使用Apache Commons DBCP。 有一项任务是跟踪DBCP的内部行为 – 活动和空闲连接的数量。 我发现DBCP根本没有任何这样的日志记录。 是的,当从池中借用连接时,可以编写输出BasicDataSource状态的代码。 但是,在返回或关闭连接时,无法跟踪BasicDataSource的状态,因为连接对象对池没有任何了解。 有任何想法吗?

如何调试Spring AOP

我有一个Spring AOP的问题,它没有将方面与它应该的所有方法联系起来(在我看来)(有关根问题的更多信息,请参阅此问题: Spring AOP忽略了一些Hessian服务的方法 )。 我如何调试,哪些方法和实例与哪些方面相结合? 有没有类似于弹簧的详细旗帜,它提供了这些信息?