我正在使用Log4j2,默认记录器实现已在我的项目中广泛使用。现在,我需要解析日志消息并替换某些关键字,然后再将它们记录到日志文件中。满足此要求的一个好方法可能是覆盖public void onResponse(JSONObject response) {
try {
if (response.getBoolean("success")) {
Log.i("response", response.toString());
Toast.makeText(RegisterActivity.this, response.get("message").toString(), Toast.LENGTH_SHORT).show();
startActivity(new Intent(getApplicationContext(), MainActivity.class));
finish();
} else {
Log.e("Response", response.toString());
Toast.makeText(RegisterActivity.this, "" + response, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
,info()
等记录器方法或它们的底层底层方法,在这些方法中,我可以解析消息并对其进行修改,然后调用原始的超级方法。类记录器方法。
我看到error()
类是AbstractLogger
接口的实现类,当您在类中进行Logger
时,您会得到Logger logger = LogManager.getLogger();
类的引用。
现在,我创建了一个扩展AbstractLogger
的类CustomLogger
,其javadoc表示这样做:
记录器的基本实现。强烈建议您 记录器的实现扩展了此类。
问题是,如何使AbstractLogger
返回我的LogManager.getLogger()
类而不是CustomLogger
类的引用,以便不需要修改现有类中的log语句,并且在记录消息之前,我可以解析和修改消息。目前,我继续获得AbstractLogger参考。我想知道Log4j是如何使用户扩展其实现的。
答案 0 :(得分:1)
-我认为添加器可能是一个更好的选择。这意味着您将必须实现
org.apache.logging.log4j.core.Appender
或从
扩展org.apache.logging.log4j.core.appender.AbstractAppender
并更改为
public void append(LogEvent event) {}
方法。根据您的需要,您还可以修改或复制一些其他的appender类(不幸的是,其中一些声明为final)并相应地进行修改。
.rm
答案 1 :(得分:0)
我不想说RTM,但这是RTM的情况。以下内容将帮助您入门。专门在底部查找有关如何编译客户记录器的第一个链接。
http://logging.apache.org/log4j/2.0/manual/customloglevels.html