Ada*_*deg 15 java logging warnings log4j
有一种模式偶尔会发生.我有一个多次调用的方法,它包含以下代码段:
Foo foo = getConfiguredFoo();
if (foo == null) {
logger.warn("Foo not configured");
foo = getDefaultFoo();
}
Run Code Online (Sandbox Code Playgroud)
然后我的日志文件被这个警告混乱了一百次.我知道我可以grep把它拿出来,但我想知道是否有更好的方法只能看到这个警告一次.
注意:默认情况下,重复邮件是正确的行为,因此这不是为了避免无意的重复日志消息.我将我的问题标记为log4j,但我对其他java日志框架持开放态度.
这是我能想到的:一个累积警告的类,可以在最后转储这些警告。这是很常规的,但你可以明白要点。当然,可以自定义转储部分以使用记录器。
class BadNews {
static Map<String,List<Object>> warnings = [:];
static void warn(String key, Object uniqueStuff) {
def knownWarnings = warnings[key]
if (! knownWarnings) {
knownWarnings = []
warnings[key] = knownWarnings
}
knownWarnings << uniqueStuff
}
static void dumpWarnings(PrintStream out) {
warnings.each{key, stuffs ->
out.println("$key: " + stuffs.size())
stuffs.each{
out.println("\t$it")
}
}
}
}
class SomewhereElse {
def foo(Bar bar) {
if (! bar)
BadNews.warn("Empty bar", this)
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3351 次 |
| 最近记录: |