当前的日志阈值是关于日志级别(TRACE,DEBUG,INFO,WARN,ERROR和FATAL)对我来说是不够的。我有一个千兆字节的日志从第三方库写入紧急情况下的错误类别。我不想打开这个日志,因为我想看到这个问题日志。大多数日志都是连续重复的堆栈跟踪。所以我想要一种可以
请建议
我以前也写过类似的东西(每次最多发送X封邮件)。它会给你一个方向。设置器不是强制性的,但它们允许您通过log4j更改默认值。属性
。
public class LimitedSMTPAppender extends SMTPAppender {
private int limit = 10; // max at 10 mails ...
private int cycleSeconds = 3600; // ... per hour
public void setLimit(int limit) {
this.limit = limit;
}
public void setCycleSeconds(int cycleSeconds) {
this.cycleSeconds = cycleSeconds;
}
private int lastVisited;
private long lastCycle;
protected boolean checkEntryConditions() {
final long now = System.currentTimeMillis();
final long thisCycle = now - (now % (1000L*cycleSeconds));
if (lastCycle!=thisCycle) {
lastCycle = thisCycle;
lastVisited = 0;
}
lastVisited++;
return super.checkEntryConditions() && lastVisited<=limit;
}
}
Log4j没有这种开箱即用的appender。但您可以执行以下操作:
为使用千兆字节数据的第三方库添加附加程序(“我有千兆字节的日志从第三方库写入ERROR类别”)。并配置您的附加程序,使它们不使用如此大量的存储。
>
RollingFileAppender将此第三方库appender配置为滚动文件。一段时间后,他们将使用最旧的文件,您只能保留最新的日志。
JDBCAppender此appender接受存储过程的使用。编写一个存储过程,以便它可以执行您想要的操作。
对于第一个需求,请添加一个计算列,或者在存储过程中计算此值,然后添加到表列中。然后控制此值以决定是否需要将此日志行插入数据库。
对于您的第二个需求,您可以获取异常消息的哈希值(MD5,SHA等)。如果此哈希值存在于数据库表中,则可以忽略以插入它。或者,您可以计算存在多少个,并相应地决定如何插入到数据库中。
您不需要使用企业数据库来实现这些目的,例如,您可以使用apache derby,然后所有日志都保留在应用服务器中。我认为这个JDBCAppender更符合您的要求。
主要内容:Logger日志方法的例子,Logger的日志方法Logger 类有多种方法来处理日志记录活动。Logger 类不允许我们实例化一个新的 Logger 实例,但它支持两种获取 Logger 对象的静态方法: 两个方法中的第一个返回应用程序实例的根记录器,它没有名称。 任何其他命名的 Logger 对象实例都是通过传递记录器的名称由第二种方法获得的。记录器的名称可以是您传递的任何字符串,通常是类或包名称,如下所述: Logger日志方法的例子 Lo
问题是它不在catalina- .log中记录,而是在catalina中记录。似乎没有正确配置appender。文件catalina似乎是从log4j.appender.catalina.file=${catalina.home}/logs/catalina创建的。在配置中。 有人能帮我解决这个问题吗?
我知道有很多关于这个的问题,但是我确实经历了所有的问题,并且有点困惑自己,我列出了我遵循的步骤,请让我知道我把它搞砸了。 1) 我只想在应用程序级别使用Log4j,所以需要复制WL_HOME/server/lib/wllog4j。jar和log4j。jar在Domail_Home/Lib? 2) 我使用的是Maven,我在pom中添加了Log4j依赖项。xml[war]。我把战争藏在耳朵里。 3)
我想用SpringBoot1.5配置log4j。10.释放。我排除了,并添加了log4j依赖项。在spring启动之前,我有所有日志,但在spring启动之后,init日志停止。 控制台日志: 和log4j2。xml文件: 你知道我做错了什么吗?
问题内容: 有没有一种方法可以将log4j日志事件写入到也由其他应用程序写入的日志文件中。其他应用程序可以是非Java应用程序。有什么缺点?锁定问题?格式化? 问题答案: Log4j有一个SocketAppender,它将事件发送到服务,您可以自己实现或使用与Log4j捆绑在一起的简单实现。 它还支持syslogd和Windows事件日志,这对于尝试将日志输出与非Java应用程序中的事件统一起来可
我一直在尝试关闭石英的恼人的调试日志记录。我使用log4j作为日志框架,我已经尝试将这一行添加到lg4j属性文件中 我仍然收到大量的调试日志消息 如何关闭此功能? 编辑。我已经将我的配置移动到xml文件...但仍然遇到同样烦人的问题 编辑2。。。这是我的pom。xml文件(有趣的部分) 类路径中的EDIT3 jar