当前位置: 首页 > 知识库问答 >
问题:

日志记录不显示

叶冥夜
2023-03-14
} catch(Exception e) {
      System.out.println("This gets printed in Netbeans tab");
      LOG.log(Level.SEVERE, "This doesnt");
}

我怀疑这可能是我包含的一个库,它正在扰乱我的日志。这有可能吗?librray可以改变我的日志显示方式吗?既然我有点迷路了,我该怎么调查呢?

共有1个答案

闾丘谦
2023-03-14

我怀疑这可能是我包含的一个库,它正在扰乱我的日志。这有可能吗?

是的。JUL到SLF4J的桥可以从JUL根记录器中删除控制台处理程序。有些库调用logmanager.reset,这可以删除和关闭所有处理程序。

库可以更改日志的显示方式吗?

import java.io.File;
import java.io.IOException;
import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Enumeration;
import java.util.logging.Handler;
import java.util.logging.Level;
import java.util.logging.LogManager;
import java.util.logging.Logger;

public class DebugLogging {

    private static final Logger log = Logger.getLogger("test");

    public static void main(String[] a) {
        log.log(Level.FINEST, "Finest");
        log.log(Level.FINER, "FINER");
        log.log(Level.FINE, "FINE");
        log.log(Level.CONFIG, "CONFIG");
        log.log(Level.INFO, "INFO");
        log.log(Level.WARNING, "WARNING");
        log.log(Level.SEVERE, "SEVERE");
        log.finest("Finest Log");
        log.finer("Finer Log");
        log.fine("Fine Log");
        log.config("Config Log");
        log.info("Info Log");
        log.warning("Warning Log");
        log.severe("Severe Log");
        printConfig(System.err);
    }

    private static void printConfig(PrintStream ps) {
        String cname = System.getProperty("java.util.logging.config.class");
        if (cname != null) {
            try {
                ClassLoader sys = ClassLoader.getSystemClassLoader();
                Class<?> c = Class.forName(cname, false, sys);
                ps.println(sys.getClass().getName() +" found log configuration class " + c.getName());
            } catch (LinkageError | ClassNotFoundException | RuntimeException cnfe) {
                ps.println("Unable to load " + cname);
                cnfe.printStackTrace(ps);
            }
        } else {
            ps.println("java.util.logging.config.class was null");
        }
        
        String file = System.getProperty("java.util.logging.config.file");
        if (file != null) {
           ps.println("java.util.logging.config.file=" + file);
           try {
               ps.println("CanonicalPath=" + new File(file).getCanonicalPath());
           } catch (RuntimeException | IOException ioe) {
               ps.println("Unable to resolve path for " + file);
               ioe.printStackTrace(ps);
           }

           try {
               Path p = Paths.get(file);
               if (Files.isReadable(p)) {
                   ps.println(file + " is readable and has size " + Files.size(p));
               } else {
                   if (Files.exists(p)) {
                       ps.println(file + " exists for " + System.getProperty("user.name") + " but is not readable.");
                   } else {
                       ps.println(file + " doesn't exist for " + System.getProperty("user.name"));
                   }
               }
           } catch (RuntimeException | IOException ioe) {
               ps.println("Unable to read " + file);
               ioe.printStackTrace(ps);
           }
        } else {
            ps.println("java.util.logging.config.file was null");
        }

        LogManager lm = LogManager.getLogManager();
        ps.append("LogManager=").println(lm.getClass().getName());
        synchronized (lm) {
            Enumeration<String> e = lm.getLoggerNames();
            while (e.hasMoreElements()) {
                Logger l = lm.getLogger(e.nextElement());
                if (l != null) {
                    print(l, ps);
                }
            }
        }
    }

    private static void print(Logger l, PrintStream ps) {
        String scn = l.getClass().getSimpleName();
        ps.append("scn=").append(scn).append(", n=").append(l.getName())
                .append(", uph=").append(String.valueOf(l.getUseParentHandlers()))
                .append(", l=").append(String.valueOf(l.getLevel()))
                .append(", fl=").println(l.getFilter());
        for (Handler h : l.getHandlers()) {
            ps.append("\t").append(l.getName()).append("->")
                    .append(h.getClass().getName()).append(", h=")
                    .append(String.valueOf(h.getLevel())).append(", fl=")
                    .append(String.valueOf(h.getFilter())).println();
        }
    }
}
 类似资料:
  • 互联网上有许多帖子建议如何从logback迁移到log4j2进行Spring引导日志记录。 参考这个sof post-Spring Boot日志与log4j2-我已经配置我的项目使用log4j2。然后我添加了一些基本的log4j2.xml和log4j2.properties文件来测试。 但是在这些更改之后,我的项目无法进行任何日志记录。有人能帮我找出毛病吗? 项目代码可在github-https:

  • 我想在我的应用程序中使用SLF4J+logback用于两个目的--日志和审计。 14:41:57.978[main]信息AUDIT_LOGGER-110欢迎使用main 如何确保审核消息在审核记录器下只出现一次?

  • 问题内容: 我正在考虑将Redis用于Web应用程序日志记录目的。我用谷歌搜索,有人将日志转储到Redis队列/列表中,然后将计划的工作人员转储到磁盘中。 http://nosql.mypopescu.com/post/8652869828/another-redis-use-case- centralized-logging 我希望寻求理解,为什么不直接使用Redis持久化到磁盘?如果我分配了一

  • logging 模块自 2.3 版以来一直是 Python 标准库的一部分。在 PEP 282 中有对它的简洁描述。除了 基础日志教程 之外,这些文档是非常难以阅读的。 日志记录一般有两个目的: 诊断日志 记录与应用程序操作相关的日志。例如,当用户遇到程序报错时, 可通过搜索诊断日志以获得上下文信息。 审计日志 为商业分析而记录的日志。从审计日志中,可提取用户的交易信息, 并结合其他用户资料构成用

  • 主要内容:修改日志管理器配置每个初学者都很熟悉在有问题的代码中使用 System.out.println 方法在控制台打印消息,来帮助观察程序运行的操作过程。如果你使用  System.out.println 方法,一旦发现问题的根源,就要将这些语句从代码中删去。如果接下来又出现了问题,就需要再插入几个调用 System.out.println 方法的语句,如此反复,增加了工作量。 日志用来记录程序的运行轨迹,方便查找关键信

  • 提示 你可以在 GitHub 上查阅当前文章涉及的代码样例。 ASP.NET Core 应用程序 一旦使用了 AddDbContext 或 AddDbContextPool ,EF Core 就会自动集成 ASP.NET Core 的日志记录机制。因此,当使用 ASP.NET Core 的时候,日志记录的配置与 ASP.NET Core 帮助文档 中所描述的是一致的。 其他应用程序 EF Core