草庐IT

java - 确定 FileHandler 使用的文件

我正在创建一个允许循环访问文件的java.util.logging.FileHandler。当我的应用程序的多个实例运行时,将为应用程序的每个实例创建一个新的日志文件。我需要知道应用程序正在使用什么文件,因为我想将日志文件上传到我的服务器以供进一步审查。我如何知道某个FileHandler正在使用哪个文件? 最佳答案 最简单的方法是在文件名本身中放置某种标识符,即创建FileHandler时的pattern参数。由于这些是同一应用程序的实例,区分它们的一种方法是通过它们的进程ID,因此您可以将其作为模式的一部分。更好的方法是通过命令

java - Scala 2.9 桥接方法

我正在使用Scala2.9.1我已经这样定义了一个Logging特征:traitLogging{defdebug(msg:String,throwables:Throwable*)=........}我有一个JMSPublisher类,它混合了Logging特性:classJMSPublisherextendsPublisherwithLogging{defpublishProducts(list:List[_这一切都编译得很好。我的问题是我有一个用户想要将我的JMSPublisher加载到Spring中。他使用的是Spring2.5.6。在启动期间加载ApplicationConte

java - 在 log4j2 中按类名过滤

我正在使用log4j2,但我不知道如何按类名进行过滤。我试过使用RegexFilter但它只过滤文本消息。在旧的log4j中,标签'filter'就足够了有人知道现在该怎么做吗?提前致谢!更新:好的,我做到了!我需要定义一个记录器并在属性“名称”中设置类名: 最佳答案 如果您遵循记录器的命名约定,这在Log4j中会自动工作。在您的代码中,使用类名声明记录器:Loggerlogger=LogManager.getLogger(MyClass.class);记录器自动分配名称fully.qualified.class.name.of.M

java - 使用 Log4J 或 LogBack 的控制台上的进度条

我有一个使用Log4J打印其输出的控制台应用程序。这很有用,因为我可以轻松地实现一个开关以选择性地显示调试消息,即使它们在默认情况下是隐藏的。此应用程序有一些长时间运行的操作,进度条将适合这些操作。使用Log4J或LogBack实现此功能的最佳方法是什么? 最佳答案 要向控制台写入进度条或任何类型的更新文本,只需以\r(回车)而不是\n(换行)结束输出)以便下一行将其覆盖。这question进入更多细节。F-ANSI库使您能够轻松生成美观的控制台输出,包括覆盖前一行。但如果您打算使用日志记录框架,这不仅不可能,而且也不是您想要的。正

java - 如何绑定(bind)SLF4J和Log4J?

我正在尝试使用slf4j+log4j设置一个项目,但该死的东西就是不起作用......我不断收到异常:FailedtoinstantiateSLF4JLoggerFactoryReportedexception:java.lang.NoClassDefFoundError:org/apache/log4j/Levelatorg.slf4j.LoggerFactory.bind(LoggerFactory.java:129)atorg.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:108)atorg.slf4j.

Java Spring Boot - 使用有效载荷记录响应

我目前正在使用SpringBoot将请求/响应日志记录集成到REST服务中。对于请求,我选择了Spring提供的CommonsRequestLoggingFilter:@BeanpublicCommonsRequestLoggingFilterrequestLoggingFilter(){CommonsRequestLoggingFilterloggingFilter=newCommonsRequestLoggingFilter();loggingFilter.setIncludeClientInfo(false);loggingFilter.setIncludeQueryString

java - 将 INFO 和 ERROR 日志与 java.util.logging 分开

我正在为Java应用程序配置日志记录。我的目标是两个日志:一个用于所有消息,一个用于特定级别以上的消息。该应用程序使用java.util.logging.*类:我按原样使用它,因此我只能通过logging.properties进行配置文件。我没有看到以不同方式配置两个FileHandler的方法:我看到的文档和示例设置了如下属性:java.util.logging.FileHandler.level=INFO虽然我想要两个不同的处理程序以不同的级别记录到不同的文件。有什么建议吗? 最佳答案 http://java.sun.com/j

java - 捕获 Java EE Web 应用程序中的每个异常

首先,我为所有不可恢复的异常抛出运行时异常,这导致这些异常向上传播到容器,我目前在容器中使用错误页面(在web.xml中定义)。在此错误页面中有一个调用记录器的脚本。我遇到的问题是异常在这次调用时不再位于堆栈中。我可以从请求范围变量(“javax.servlet.error.message”)访问它。该字符串是堆栈跟踪。显然我需要这个堆栈跟踪用于日志记录,并且出于安全原因,可以在不同的应用程序服务器上关闭“javax.error_message”......所以我的问题是,如何才能最好地从JavaEE应用程序中记录运行时异常而不用将所有内容都包装在其中:try{}catch(Excep

java - 每次程序执行如何在 log4j 中创建日志文件?

我目前正在使用log4j中的DailyRollingFileAppender类来执行每日日志文件附加操作,但我希望按以下格式分隔日志文件:DATA.log.__这应该在每次程序执行时完成一次,所以我最终会得到类似...DATA.log.2011-01-13_12-46-38_DATA.log.2011-01-13_12-46-38_DATA.log.2011-01-13_12-46-38_来自不同环境的不同日志文件可以汇集在一起​​。有没有办法在不扩展FileAppender类的情况下做到这一点?至少,有没有办法做到:DATA.log.__.log谢谢编辑:我已经在使用DailyRol

java - 主机名在生产环境的 Logback/SLF4J 中未定义

我正在使用Logback/SLF4J进行日志记录,它在我的Mac开发机器上运行得非常好。我将以下模式用于邮件附加程序主题:[ERROR]${HOSTNAME}:%msg在我的Mac上运行服务时,我收到这样的主题:macbook-pro.localhost:Errormessage当我在Debian(Lenny)VPS上运行该服务时,我收到以下电子邮件主题HOSTNAME_IS_UNDEFIENED:Errormessage在Mac和Debian机器的命令行中输入hostname会产生以下结果:mac:macbook-pro.localhostdebian:s1.myservice.co