Tag: logging

Spring HandlerInterceptorAdapter postHandle有保证吗?

我目前有两个处理类似function的拦截器。 我想合并这些。 一个拦截器是访问请求记录器,它显示登录用户,会话ID和请求的URL。 另一个拦截器是一个进程时间记录器。 访问记录器为了记录必须记录的所有记录,请在preHandle方法中记录请求。 我们的想法是,不管之后发生了什么(例如,例外),确切的访问请求都会存在。 但是,由于其性质,进程时间记录器必须登录postHandle方法。 为了合并这个function,我必须将所有内容都移动到一个postHandle方法中。 但是,如果在某处发生exception,我似乎可能会丢失一些日志记录,尤其是在应用程序代码中尚未正确处理的exception。 这些考虑是否有任何保证或说明?

在java.util.logging中,什么是全局记录器?

在java.util.logging日志框架中有一个名为”global”的特殊Logger实例,但我找不到任何有关其预期用途的文档。 Logger.getGlobal()的文档只是说 返回名为Logger.GLOBAL_LOGGER_NAME全局记录器对象。 反过来, Logger.GLOBAL_LOGGER_NAME仅记录为 GLOBAL_LOGGER_NAME是全局记录器的名称。 我相当广泛的搜索没有找到任何更有用的文档。 什么是全球记录器用于? 这是在我遗漏的地方记录的吗?

Java日志记录:Log4j Version2.x:显示最终客户端调用方法(不是中间日志记录助手方法)

以下3篇文章提供了如何使用中间日志记录助手的答案,并且仍然让底层记录器从客户端的方法报告给该日志记录助手(而不是将日志记录助手方法报告为源): Java日志记录:显示调用者的源行号(而不是日志记录助手方法) 间接调用log4j的日志方法(来自辅助方法) 使用log4j包装器在日志语句中打印“source”类 但似乎只提供Log4j 1.2的答案,它提供了现在已经不存在的: Category.log(String callerFQCN, Priority level, Object message, Throwable t). log4J 2.5 API中的Logger似乎没有明显的等价物。 任何人都可以提供与直接使用Log4J 2.x兼容的答案吗?

用于大输出的Java高级文本日志记录窗格

Mathematica附带了一个简单的java程序,可以检查前端和内核之间的通信。 它叫做LinkSnooper ,一般来说效果很好。 看起来像这样 我想我可以在一定程度上改进程序的行为和可用性,但为了做到这一点,我需要重新实现一些部分。 我需要的一个基本部分是文本窗格,它具有以下属性: 它可以接收大量数据,它可能应该使用快速环形缓冲区,以便在数据增长过多时删除第一个日志行。 另一种可能性是它自动开始将数据写入磁盘,并可能在用户向上滚动以查看第一个条目时重新加载它 它应该能够处理彩色文本。 我计划在每个到达的线路上使用一个简单的荧光笔(日志数据实际上是真正的Mathematica语法),使阅读更容易 它不需要是可写的。 如果文本窗格是只读的,则没有问题。 问题:这样的事情是否已经存在? 目前,LinkSnooper在下面使用了一个JTextArea ,在我开始编写我自己的版本之前,我想问一下是否有人已经这样做了。 编辑: 我打算做的是使用一些Logger框架,因为我觉得这些库应该能够处理大量数据。 此外,它们通常提供格式化消息的接口,您可以定义可以处理不同消息的不同处理程序。 我所希望的是,有人已经将它与一个整洁的工作文本窗口相结合,可以处理大量输出。

配置log4j属性文件以存储在mysql数据库中

我开始使用log4j已经有一段时间了; 非常酷的日志框架。 我做过其他类型的日志记录,如控制台和文件记录。 因此尝试使用mysql进行数据库日志记录的数据库适配器。 因此,我创建了以下名为log4j.properties的属性文件 – # Define the root logger with appender file log4j.rootLogger = DEBUG, DB # Define the DB appender log4j.appender.DB=org.apache.log4j.jdbc.JDBCAppender # Set JDBC URL log4j.appender.DB.URL=jdbc:mysql://localhost:3306/test # Set Database Driver log4j.appender.DB.driver=com.mysql.jdbc.Driver # Set database user name and password log4j.appender.DB.user=root log4j.appender.DB.password= # Set the SQL statement to be executed. log4j.appender.DB.sql=insert into log(date,level,message) values(“%d”,”%p”,”%m”) […]

如何将应用程序审核记录到Wildfly 8上的单独文件中

我有一个在Wildfly 8上运行的Java EE应用程序,我想在其中启用审计日志记录。 使用InterceptorBinding和Interceptor我能够捕获所有相关的API调用。 我想要做的是将这些审计调用写入单独的审计日志文件。 我尝试使用logback实现这一点,并在此stackoverflow问题的第二个答案的帮助下,我终于设法做到了这一点。 第一个回复,即禁用系统日志记录,不起作用。 但是,虽然此解决方案成功将我的审计跟踪写入单独的文件,但所有其他日志记录都停止写入其默认文件,并且仅输出到控制台。 我想要实现的是将所有常规日志记录默认写入常规文件(即server.log),但是将我自己的自定义审核日志消息放在单独的文件中(也可以每天滚动,重命名)旧文件到它写的日期)。 无论是使用Logback,log4j,Wildfly自己的日志记录系统,还是Wildfly CLI审核日志,都是无关紧要的,只要它达到目的,开销最小。 我正处于这个阶段,考虑使用简单的输出流将其写入我自己的文件中,但是当有解决方案应该更有效地执行此操作时,这感觉相当多余。 这是我的logback文件的样子: /Applications/wildfly/standalone/log/logback/audit/audit.log logFile.%d{yyyy-MM-dd}.log %d{HH:mm:ss.SSS}: – %msg%n /Applications/wildfly/standalone/log/logback/server.log logFile.%d{yyyy-MM-dd}.log %d{HH:mm:ss.SSS} %-4relative [%thread] %-5level %logger{35} – %msg%n

配置Java FileHandler日志记录以创建不存在的目录

我正在尝试配置Java Logging API的FileHandler以将我的服务器记录到我的主目录中的文件夹中的文件,但我不想在它运行的每台机器上创建这些目录。 例如,在logging.properties文件中,我指定: java.util.logging.FileHandler java.util.logging.FileHandler.pattern=%h/app-logs/MyApplication/MyApplication_%u-%g.log 这将允许我在MyApplication的主目录(%h)中收集日志并将它们旋转(使用%u和%g变量)。 当我在log4j.properties中指定时,Log4j支持这个: log4j.appender.rolling.File=${user.home}/app-logs/MyApplication-log4j/MyApplication.log 看起来Logging FileHandler存在一个错误: 错误6244047:不可能指定driectorys来记录FileHandler,除非它们存在 听起来他们不打算修复它或暴露任何属性来解决问题(除了让你的应用程序解析logging.properties或硬代码所需的路径): 看起来java.util.logging.FileHandler看起来不希望指定的目录可能不存在。 通常,无论如何都必须检查这种情况。 此外,它还必须检查目录写入权限。 另一个问题是,如果其中一项检查未通过,该怎么办。 如果用户具有适当的权限,一种可能性是在路径中创建缺少的目录。 另一种方法是抛出一个带有明确错误信息的IOException。 后一种方法看起来更加一致。

一个很好的Java数据库日志追加器?

在我的工作场所,我们编写了一个自定义log4j appender,它将日志消息写入数据库(异步使用专用线程,因此没有性能损失)。 我更喜欢写入日志文件 – 基于数据库的日志更容易查询和分析。 是否有一个开源解决方案来执行此操作(特别是对于log4j或任何其他java记录器)? 我们的appender有一些东西,我想在另一种方法中看到: 记录exception(呃!) 数据库写入来自单独的线程/池 我们的appender支持以下列,我希望在我们找到的任何解决方案中看到所有这些列。 LOGID 时间 信息 堆栈跟踪 进程ID 线程ID 机器名称 零件 等级(调试/信息/警告/ …) ThreadName

Java 8中的java.util.logging.FileHandler是否已损坏?

首先,一个简单的测试代码: package javaapplication23; import java.io.IOException; import java.util.logging.FileHandler; public class JavaApplication23 { public static void main(String[] args) throws IOException { new FileHandler(“./test_%u_%g.log”, 10000, 100, true); } } 此测试代码仅使用Java 7创建一个文件“test_0_0.log”,无论我多久运行一次该程序。 这是预期的行为,因为构造函数中的append参数设置为true。 但是如果我在Java 8中运行此示例,则每次运行都会创建一个新文件(test_0_0.log,test_0_1.log,test_0_2.log,…)。 我认为这是一个错误。 Imho,Java的相关变化是这样的: @@ -413,18 +428,18 @@ // object. Try again. continue; } – FileChannel fc; + try { – lockStream = new FileOutputStream(lockFileName); – […]

Log4j中包含日期的文件名

我正在尝试将当前日期追加到log4j日志文件中。 所以它会是这样的: 对myApp-2011-01-07.log 问题是我不想使用DailyRollingFileAppender。 原因是每天都会运行另一个脚本来备份logs文件夹中的所有内容。 这是在Tomcat5.5下运行的。 这可能在log4j中吗?