Java 如何将所有回写错误转换为字符串
假设我有一个有20个类的程序,每个类都有Java 如何将所有回写错误转换为字符串,java,logging,slf4j,logback,Java,Logging,Slf4j,Logback,假设我有一个有20个类的程序,每个类都有private static Logger=LoggerFactory.getLogger(SomeClass.class)。这20个类将记录警告、信息、调试或错误 在其中一个类中,如何访问程序中记录的所有错误(在所有类中)?注意:我不想将所有这些转储到.log,我希望从Java程序中访问它们。您希望在所有类都将语句记录到.log文件中时访问它,还是希望在记录发生时继续访问它 如果您想在日志功能完成后访问这20个类中的所有日志,那么为什么不稍后在其他jav
private static Logger=LoggerFactory.getLogger(SomeClass.class)代码>。这20个类将记录警告、信息、调试或错误
在其中一个类中,如何访问程序中记录的所有错误(在所有类中)?注意:我不想将所有这些转储到.log
,我希望从Java程序中访问它们。您希望在所有类都将语句记录到.log文件中时访问它,还是希望在记录发生时继续访问它
如果您想在日志功能完成后访问这20个类中的所有日志,那么为什么不稍后在其他java程序中读取.log文件来访问所有日志呢
但我想您需要在日志文件中添加一个指示符,以确定这20个类已经记录了哪些语句。例如,假设consoleappender配置中的某个字符串您希望在所有类都将该语句记录在.log文件中时访问它,还是希望在记录发生时继续访问它
如果您想在日志功能完成后访问这20个类中的所有日志,那么为什么不稍后在其他java程序中读取.log文件来访问所有日志呢
但我想您需要在日志文件中添加一个指示符,以确定这20个类已经记录了哪些语句。例如,假设consoleappender配置中的某个字符串您希望在所有类都将该语句记录在.log文件中时访问它,还是希望在记录发生时继续访问它
如果您想在日志功能完成后访问这20个类中的所有日志,那么为什么不稍后在其他java程序中读取.log文件来访问所有日志呢
但我想您需要在日志文件中添加一个指示符,以确定这20个类已经记录了哪些语句。例如,假设consoleappender配置中的某个字符串您希望在所有类都将该语句记录在.log文件中时访问它,还是希望在记录发生时继续访问它
如果您想在日志功能完成后访问这20个类中的所有日志,那么为什么不稍后在其他java程序中读取.log文件来访问所有日志呢
但我想您需要在日志文件中添加一个指示符,以确定这20个类已经记录了哪些语句。例如,假设ConsolePender配置中的某个字符串不太难-
任何一个
读取日志文件
或
重写您的log4j框架
因此,它应该将数据记录到java对象,而不是记录到文件中(这将非常占用内存)。不太难-
任何一个
读取日志文件
或
重写您的log4j框架
因此,它应该将数据记录到java对象,而不是记录到文件中(这将非常占用内存)。不太难-
任何一个
读取日志文件
或
重写您的log4j框架
因此,它应该将数据记录到java对象,而不是记录到文件中(这将非常占用内存)。不太难-
任何一个
读取日志文件
或
重写您的log4j框架
因此,它应该将数据记录到java对象中,而不是记录到文件中(这将非常占用内存)。使用自定义附加器添加到列表中,该列表是单例列表,您可以使用它访问所有不匹配项
CustomAppender.java
public class CustomAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
@Override
protected void append(ILoggingEvent eventObject) {
if(eventObject.getLevel() == Level.WARN){
{
KPLogHolder.addData(eventObject.getMessage);
}
}
}
public class KPLogHolder {
private static List<String> holder;
public static List<String> getLog(){
if(holder== null){
return new ArrayList<String>();
}
return holder;
}
public static void addData(String item){
getLog().add(item);
}
}
注意我没有使用同步,您需要实现这些同步,因为ArrayList未同步。不知道为什么会有这样的要求,但要小心。大多数情况下,这些错误的实现会导致服务器停机。如果执行不当 使用自定义追加器添加到列表中,该列表是单例列表,您可以使用它访问所有不匹配项
CustomAppender.java
public class CustomAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
@Override
protected void append(ILoggingEvent eventObject) {
if(eventObject.getLevel() == Level.WARN){
{
KPLogHolder.addData(eventObject.getMessage);
}
}
}
public class KPLogHolder {
private static List<String> holder;
public static List<String> getLog(){
if(holder== null){
return new ArrayList<String>();
}
return holder;
}
public static void addData(String item){
getLog().add(item);
}
}
注意我没有使用同步,您需要实现这些同步,因为ArrayList未同步。不知道为什么会有这样的要求,但要小心。大多数情况下,这些错误的实现会导致服务器停机。如果执行不当 使用自定义追加器添加到列表中,该列表是单例列表,您可以使用它访问所有不匹配项
CustomAppender.java
public class CustomAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
@Override
protected void append(ILoggingEvent eventObject) {
if(eventObject.getLevel() == Level.WARN){
{
KPLogHolder.addData(eventObject.getMessage);
}
}
}
public class KPLogHolder {
private static List<String> holder;
public static List<String> getLog(){
if(holder== null){
return new ArrayList<String>();
}
return holder;
}
public static void addData(String item){
getLog().add(item);
}
}
注意我没有使用同步,您需要实现这些同步,因为ArrayList未同步。不知道为什么会有这样的要求,但要小心。大多数情况下,这些错误的实现会导致服务器停机。如果执行不当 使用自定义追加器添加到列表中,该列表是单例列表,您可以使用它访问所有不匹配项
CustomAppender.java
public class CustomAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
@Override
protected void append(ILoggingEvent eventObject) {
if(eventObject.getLevel() == Level.WARN){
{
KPLogHolder.addData(eventObject.getMessage);
}
}
}
public class KPLogHolder {
private static List<String> holder;
public static List<String> getLog(){
if(holder== null){
return new ArrayList<String>();
}
return holder;
}
public static void addData(String item){
getLog().add(item);
}
}
注意我没有使用同步,您需要实现这些同步,因为ArrayList未同步。不知道为什么会有这样的要求,但要小心。大多数情况下,这些错误的实现会导致服务器停机。如果执行不当 直接从Logger或LoggerFactory进行日志记录时访问。我根本不想访问.log文件,而是将其保存在Java程序中。我想,当您有一个记录器时,为什么要这样做呢。对我来说似乎是个奇怪的要求。您很难通过java代码实现这种逻辑。可以创建一个HashMap,其中Key作为记录器级别,并列出该级别的所有错误。但是你必须通过这些地图,我认为当直接从Logger或LoggerFactory进行日志记录时,访问这些地图是不好的。我根本不想访问.log文件,而是将其保存在Java程序中。我想,当您有一个记录器时,为什么要这样做呢。看起来很奇怪