Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将所有回写错误转换为字符串_Java_Logging_Slf4j_Logback - Fatal编程技术网

Java 如何将所有回写错误转换为字符串

Java 如何将所有回写错误转换为字符串,java,logging,slf4j,logback,Java,Logging,Slf4j,Logback,假设我有一个有20个类的程序,每个类都有private static Logger=LoggerFactory.getLogger(SomeClass.class)。这20个类将记录警告、信息、调试或错误 在其中一个类中,如何访问程序中记录的所有错误(在所有类中)?注意:我不想将所有这些转储到.log,我希望从Java程序中访问它们。您希望在所有类都将语句记录到.log文件中时访问它,还是希望在记录发生时继续访问它 如果您想在日志功能完成后访问这20个类中的所有日志,那么为什么不稍后在其他jav

假设我有一个有20个类的程序,每个类都有
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程序中。我想,当您有一个记录器时,为什么要这样做呢。看起来很奇怪