Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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_Netbeans_Java.util.logging - Fatal编程技术网

Java 日志记录不显示

Java 日志记录不显示,java,logging,netbeans,java.util.logging,Java,Logging,Netbeans,Java.util.logging,我在应用程序中使用了JUL。通常,Netbeans会打开一个输出选项卡,显示“Tomcat”并显示我生成的日志。它工作得很好。但突然,我意识到我的日志根本没有显示,只有系统.out被打印出来。甚至最高的LOG.LOG(Level.SEVERE,“..)也没有 } catch(Exception e) { System.out.println("This gets printed in Netbeans tab"); LOG.log(Level.SEVERE, "This

我在应用程序中使用了JUL。通常,Netbeans会打开一个输出选项卡,显示“Tomcat”并显示我生成的日志。它工作得很好。但突然,我意识到我的日志根本没有显示,只有
系统.out
被打印出来。甚至最高的
LOG.LOG(Level.SEVERE,“..
)也没有

} catch(Exception e) {
      System.out.println("This gets printed in Netbeans tab");
      LOG.log(Level.SEVERE, "This doesnt");
}
我怀疑它可能是我包含的一个库,它正在弄乱我的日志。这有可能吗?库可以改变我日志的显示方式吗?既然我有点迷路了,我该如何调查

我怀疑它可能是我包含的一个库,它会弄乱我的日志。这有可能吗

是的。可以从JUL根记录器中删除控制台处理程序。某些库调用
LogManager.reset
,它可以删除并关闭所有处理程序

库能否更改日志的显示方式

是的。一旦安装了a日志桥,JUL格式化程序就不再格式化JUL记录

既然我有点迷路了,我该怎么调查呢

修改记录器树需要权限,因此您可以安装具有所有权限的,但随后启用调试跟踪以确定修改记录器树的调用方

如果这不起作用,您可以使用良好的ole'
System.out
在加载库之前和之后打印记录器树和附加的处理程序。然后开始添加并删除库,直到看到记录器发生更改

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();
        }
    }
}
导入java.io.File;
导入java.io.IOException;
导入java.io.PrintStream;
导入java.nio.file.Files;
导入java.nio.file.Path;
导入java.nio.file.path;
导入java.util.Enumeration;
导入java.util.logging.Handler;
导入java.util.logging.Level;
导入java.util.logging.LogManager;
导入java.util.logging.Logger;
公共类调试日志{
私有静态最终记录器日志=Logger.getLogger(“测试”);
公共静态void main(字符串[]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(严重级别,“严重”);
原木。最细原木(“最细原木”);
log.finer(“finer log”);
对数细(“细对数”);
log.config(“配置日志”);
log.info(“信息日志”);
日志。警告(“警告日志”);
对数严重(“严重对数”);
printConfig(System.err);
}
私有静态void printConfig(PrintStream ps){
字符串cname=System.getProperty(“java.util.logging.config.class”);
如果(cname!=null){
试一试{
ClassLoader sys=ClassLoader.getSystemClassLoader();
Class c=Class.forName(cname,false,sys);
ps.println(sys.getClass().getName()+“找到的日志配置类”+c.getName());
}捕获(LinkageError | ClassNotFoundException | RuntimeException cnfe){
ps.println(“无法加载”+cname);
cnfe.printStackTrace(ps);
}
}否则{
ps.println(“java.util.logging.config.class为null”);
}
String file=System.getProperty(“java.util.logging.config.file”);
如果(文件!=null){
ps.println(“java.util.logging.config.file=“+file”);
试一试{
ps.println(“CanonicalPath=“+新文件(File).getCanonicalPath());
}捕获(RuntimeException | IOException ioe){
ps.println(“无法解析“+文件”的路径);
ioe.printStackTrace(ps);
}
试一试{
路径p=Path.get(文件);
if(Files.isReadable(p)){
ps.println(file+)可读,大小为“+Files.size(p));
}否则{
如果(Files.exists(p)){
ps.println(文件+”存在于“+System.getProperty(“user.name”)+”中,但不可读。”);
}否则{
ps.println(对于“+System.getProperty”(“user.name”))不存在文件+”;
}
}
}捕获(RuntimeException | IOException ioe){
ps.println(“无法读取”+文件);
ioe.printStackTrace(ps);
}
}否则{
ps.println(“java.util.logging.config.file为null”);
}
LogManager lm=LogManager.getLogManager();
ps.append(“LogManager=”).println(lm.getClass().getName());
已同步(lm){
枚举e=lm.getLoggerNames();
而(e.hasMoreElements()){
Logger l=lm.getLogger(e.nextElement());
如果(l!=null){
印刷品(l,ps);
}
}
}
}
专用静态无效打印(记录器l、打印流ps){
字符串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());
对于(处理程序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();
}
}
}

我一直在尝试运行此代码,但我不确定在何处运行。因此我使用Maven加载依赖项…潜在的违规者是-Apache Shiro、Shiro的扩展和数据库依赖项。但我不确定在我的应用程序中放在何处执行它们loaded@user1156544开始时只需将代码设置为exe如果没有处理程序或级别设置不正确