标签: java.util.logging

如何获取子类的Logger?

我有一个子类和一个超类.在超类中,我有一个记录某些东西的方法.当我创建子类的实例时,记录器为超类创建日志消息.为什么会发生这种情况?

代码示例:

SuperClass.java

import java.util.logging.Level;
import java.util.logging.Logger;

public abstract class SuperClass {
    public void logAndPrintClass(){
        String name = this.getClass().getName();
        System.out.println(name);
        Logger logger = Logger.getLogger(name);
        logger.log(Level.INFO, "Logmessage");
    }
}
Run Code Online (Sandbox Code Playgroud)

SubClass.java

public class SubClass extends SuperClass {
}
Run Code Online (Sandbox Code Playgroud)

TestLogBubClass.java

public class TestLogBubClass {

    public static void main(String[] args){
        SuperClass obj = new SubClass();
        obj.logAndPrintClass();
    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

SubClass
Mar 15, 2013 6:30:04 PM SuperClass logAndPrintClass
INFO: Logmessage
Run Code Online (Sandbox Code Playgroud)

如您所见,类的名称已正确打印,但在日志消息中显示不正确.

java java.util.logging

10
推荐指数
1
解决办法
2460
查看次数

java.util.logging:如何通过logger包(或前缀)设置级别?

我的应用程序使用了许多库,我正在使用它们java.util.logging进行日志记录 我希望能够通过以下方式为每个库设置不同的日志记录级别:

org.datanucleus.*.level = WARNING
com.google.apphosting.*.level = WARNING
com.myapp.*.level = FINE
Run Code Online (Sandbox Code Playgroud)

有可能吗?

logging prefix package java.util.logging log-level

9
推荐指数
2
解决办法
2万
查看次数

以编程方式关闭Jersey记录

在我的输出中,我有来自Jersey的JUL记录消息

03.12.2010 14:14:55 com.sun.jersey.api.core.PackagesResourceConfig init
INFO: Scanning for root resource and provider classes in the packages:
Run Code Online (Sandbox Code Playgroud)

以编程方式我想把它们关掉,所以我尝试了

Logger.getLogger("com.sun.jersey.api.core.PackagesResourceConfig").setLevel( Level.SEVERE );
Run Code Online (Sandbox Code Playgroud)

要么

Logger.getLogger("com.sun.jersey").setLevel( Level.SEVERE );
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

有趣的是这个全局配置有效:

Logger.getLogger( "com" ).setLevel( Level.SEVERE );
Run Code Online (Sandbox Code Playgroud)

要么

Logger.getLogger( "" ).setLevel( Level.SEVERE );
Run Code Online (Sandbox Code Playgroud)

为什么?

java rest logging jersey java.util.logging

9
推荐指数
1
解决办法
4980
查看次数

我应该在web应用程序(maven项目)中将java.util.logging的logging.properties文件放在哪里?

我想记录到文件并将其设置在属性文件中,因为默认的logger.info()输出进入控制台,而在Web应用程序中,我的情况下没有控制台.

java web-applications java.util.logging maven

9
推荐指数
3
解决办法
1万
查看次数

每次我需要时使用Logger.getLogger()或每个类创建一次

我正在使用Java util Logger.根据Logger.getLogger方法的文档,它说:"为命名的子系统查找或创建一个记录器.如果已经使用给定名称创建了一个记录器,则返回该记录器.否则将创建一个新的记录器." 每节课只召唤一次会有什么好处吗?

选项1:

public class Myclass 
    static Logger logger = Logger.getLogger(Myclass.class);

    public void method1() {
        logger.log(...);
    }

    public void method2() {
        logger.log(....);
    }
}
Run Code Online (Sandbox Code Playgroud)

选项2:

public class Myclass {
    public void method1() {
        Logger.getLogger(Myclass.class).log(...);
    }

    public void method2() {
        Logger.getLogger(Myclass.class).log(...);
    }
}
Run Code Online (Sandbox Code Playgroud)

java java.util.logging

9
推荐指数
1
解决办法
3万
查看次数

如何更改Google AppEngine中的日志记录格式

AppEngine使用JUL进行日志记录,我已经配置了logging.properties文件并引用了appengine-web.xml中的文件.

问题是AppEngine在控制台日志中显示数据的格式在每个日志行上大约180个字符后被截断.而且由于大部分内容都采用了方法和类名(包括包)和日期,因此没有太多实际的日志消息.

我试图以编程方式和通过logging.properties配置我自己的Formatter,但没有运气.

我意识到我可以通过slf4j,logback或log4j推送所有日志,但我相信这样做会导致所有这样的日志在AppEngine日志控制台中显示为stdout,它具有自己的详细风格.

有没有办法为AppEngine日志定义特定的格式,如果是这样的话?如果每个日志行没有被截断为180个字符,那就足够了.

logging google-app-engine java.util.logging

9
推荐指数
1
解决办法
1612
查看次数

如何在maven中设置java.util.logging日志级别(对于Jenkins插件(JenkinsRule)测试)

我正在编写一个Jenkins插件,并使用mvn verify和测试它JenkinsRule.到目前为止这么好,但我希望能够平息输出; 这是每次测试的页面.我使用什么样的配置文件,我在哪里放?

我在src/test/resources(以及target/test-classes)中尝试了一个合适的log4j.properties(并且只是为了确保是一个logging.properties); 我已经尝试将它们放在target/jenkins-for-test/WEB-INF/classes中,这也没有帮助.

如果慢跑任何人的记忆,我试图抑制的输出就像是

Feb 08, 2014 2:26:40 PM jenkins.InitReactorRunner$1 onAttained
INFO: Started initialization
Feb 08, 2014 2:26:40 PM jenkins.InitReactorRunner$1 onAttained
INFO: Listed all plugins
Run Code Online (Sandbox Code Playgroud)

Feb 08, 2014 2:26:44 PM hudson.PluginWrapper stop
INFO: Stopping javadoc
Feb 08, 2014 2:26:44 PM hudson.PluginWrapper stop
INFO: Stopping maven-plugin
Run Code Online (Sandbox Code Playgroud)

java java.util.logging maven jenkins jenkins-plugins

9
推荐指数
1
解决办法
3017
查看次数

如何配置jdk14日志记录的模式

我想我可以通过添加行java.util.logging.ConsoleHandler.pattern来设置模式,但是在哪里检查模式信息,如%u%h等?

java java.util.logging

8
推荐指数
2
解决办法
1万
查看次数

Tomcat中的SL4JF未显示在日志文件中

我已经安装了Tomcat,并使用SLF4J作为我们的日志框架.我复制slf4j-api-1.6.4.jarslf4j-jdk14-1.6.4.jar进入Tomcat库即$TOMCAT_HOME/lib.

我假设如果我使用SLF4J,它将委托给java.util.Logger,它将委托给底层的Tomcat日志框架.但是当我部署并检查我的应用程序时,我没有看到任何记录.我的所有异常/日志信息都会丢失.

我的理解是正确的,还是我错过了任何保持课堂路径的东西?

logging tomcat slf4j tomcat6 java.util.logging

8
推荐指数
1
解决办法
4533
查看次数

Java通过多个类进行日志记录

我想登录我的应用程序,其中包含几个类.我想在最后有一个.txt日志文件.因此,我创建了一个静态记录器实例,并在一个类中为它创建了一个FileHandler.因为我想拥有一个文件,所以我在FileHandler中将第二个参数设置为true,以便能够在日志记录期间附加日志文件.

public class MyLogging {
    static Logger logger;
    public Handler fileHandler;
    Formatter plainText;

    public MyLogging() throws IOException{
        //instance the logger
        logger = Logger.getLogger(MyLogging.class.getName());
        //instance the filehandler
        fileHandler = new FileHandler("myLog.txt",true);
        //instance formatter, set formatting, and handler
        plainText = new SimpleFormatter();
        fileHandler.setFormatter(plainText);
        logger.addHandler(fileHandler);

    }
Run Code Online (Sandbox Code Playgroud)

之后,我创建了其他记录器.我知道我必须为每个类实例一个记录器.因此我只为每个类制作记录器(没有FileHandler).但所有的记录器都引用了一个类(不是我创建记录器的类).例如:

public class Test1 {
    static Logger logger;

    public Test1()throws IOException {

        logger = Logger.getLogger(MyLogging.class.getName());
    }
Run Code Online (Sandbox Code Playgroud)

虽然执行了日志记录,但我不确定这是否是正确的解决方案.你能给我一些建议如何用java.util.logging来记录多个类吗?

java logging java.util.logging

8
推荐指数
1
解决办法
1万
查看次数