标签: java.util.logging

是否有一个强大的syslog的java.util.logging处理程序实现?

我正在考虑将第三方Java应用程序连接到我们的日志聚合/分析解决方案(可能是Splunk,但我们还没有完成我们的选择).将Splunk代理挂钩到syslog似乎是最容易的,所以我正在寻找一种方法将应用程序日志重定向到服务器上的本地syslog守护程序.

Java应用程序使用java.util.logging,遗憾的是它没有开箱即用的syslog处理程序(我相信log4j确实如此).有没有经过验证的库可以做到这一点?日志负载不是很大(每个进程大概每分钟10-20条消息,每个主机最多6个进程)但是我关注可靠性和持久性(例如当守护进程停止时会发生什么?...).

任何帮助,将不胜感激...

java logging syslog java.util.logging

6
推荐指数
1
解决办法
6047
查看次数

如何将java.util.logging重定向到文件?

我有一个使用外部库的java程序.主程序用于log4j记录其消息和库使用java.util.logging.

我的问题是来自外部库和主程序的日志消息在控制台中混合.

我想将来自外部库的所有日志消息重定向到文件.我试着用logging.properties文件做到这一点:

handlers= java.util.logging.FileHandler
.level= INFO
java.util.logging.FileHandler.pattern = foo.log
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
Run Code Online (Sandbox Code Playgroud)

该文件初始化为:

System.setProperty("java.util.logging.config.file", "logging.properties");
Run Code Online (Sandbox Code Playgroud)

不幸的是,来自外部库的日志消息不断出现在控制台中.我应该使用类似slf4j拦截日志消息的东西java.util.logging吗?

感谢您的时间.

java redirect file java.util.logging

6
推荐指数
1
解决办法
8120
查看次数

如何配置特定FileHandler的属性

Java日志记录配置文件允许我定义命名记录器的属性,例如

name.heikoseeberger.heikotron.level = FINE
name.heikoseeberger.heikotron.handlers = java.util.logging.FileHandler
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.现在我想配置特定的 FileHandler,例如使用特定的输出文件.不幸的是我只知道如何配置已存在于配置文件中的"全局" FileHandler:

java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
Run Code Online (Sandbox Code Playgroud)

我不想配置这个,而是与我的自定义Logger相关联的实例.我已经尝试了以下内容,但没有成功:

name.heikoseeberger.heikotron.java.util.logging.FileHandler.pattern = %h/heikotron.log
name.heikoseeberger.heikotron.java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
Run Code Online (Sandbox Code Playgroud)

是否可以设置特定FileHandler实例的属性?如果是,那么如何识别/命名?

java logging java.util.logging

6
推荐指数
1
解决办法
3059
查看次数

用 JVM 参数覆盖日志级别(java.util.logging)?

是否可以通过在应用程序启动时传递 JVM 选项来覆盖/设置 java.util.logging.Logger 的日志级别?

java logging jvm-arguments java.util.logging

6
推荐指数
1
解决办法
9233
查看次数

java.util.logging.LogManager.getLogger() 返回 null

我遇到了一个真正让我感到困惑的问题。我想用 JUL 日志(JDK 日志)尝试一些东西。我从以下简单程序开始:

package biz.ple;

import java.util.logging.LogManager;
import java.util.logging.Logger;

public class Application {

    public static void main(String[] args)
    {
        Logger logA = LogManager.getLogManager().getLogger("LoggerA");
        Logger logB = LogManager.getLogManager().getLogger("LoggerB");
        if (logA == null) {
            System.out.println("LoggerA is null!");
        }
        if (logB == null) {
            System.out.println("LoggerB is null!");
        }

        String normalMsg = "Message without cookie prefix.";
        String cookieMsg = "[Cookie] Message with a cookie prefix.";

        logA.info(normalMsg);
        logA.info(cookieMsg);
        logB.info(normalMsg);
        logB.info(cookieMsg);
    }
}
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,记录器 logA 和 logB始终为空。我在文档中读到应用程序没有强引用的记录器我随时都会被 GC,但在我看来变量 logA 和 logB 确实是强引用,不是吗?

我真的不明白这一点,希望得到任何帮助。

java java.util.logging

6
推荐指数
1
解决办法
6299
查看次数

通过WebSphere管理控制台控制日志记录级别

我有一个Web应用程序,我在其中使用java.util.logging.在我的logging.properties文件中,默认级别是info.我的应用程序中有记录器用于所有级别的日志记录(信息,调试,致命等).此Web应用程序将部署在WebSphere 8上.

如果我想在运行时通过WAS管理控制台更改日志记录级别,从信息到错误,应用程序怎么办?我怎样才能做到这一点?

websphere logging java.util.logging

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

是否有可能让Handler认识到它已被删除?

我正在编写一个自定义日志配置类,它设置一个特定的处理程序并将其与根记录器相关联,并计划在多个应用程序中使用它.我担心实际的程序代码将删除该处理程序并安装另一个.

是否有一种方法可以让处理程序检测到它已从特定记录器中删除,或者记录器是否报告了该员工已更改?

我唯一的另一种选择是有一个线程,它会定期轮询根记录器处理程序并重新连接这个处理程序,这是非常难看的

java java.util.logging

6
推荐指数
1
解决办法
58
查看次数

如何正确初始化记录器?

我有以下问题:我想使用java.util.logging.Logger.没有我发现不同的资源,1,2,3,如何能够修改记录的行为.

特别是在2 a(在我看来)的问题中,给出了根据类名初始化记录器的良好结构.如果需要,这还允许在基于包的级别上修改详细程度以进行调试.

经过一番深入研究后发现,全局记录器和"空"记录器(带名称"")不一样.另请参见下面的示例.我刚刚创建了一个记录器foo.Bar,它锚定在空记录器而不是被调用的记录器上foo.只有在我第一次创建记录器时bar,记录器bar.Baz才会正确锚定.

这使得这个问题中的方法主要无用,因为我们不能假设之前创建的父记录器.根据需要,我必须根据需要解析类名并创建记录器.

我是否正确我必须添加一些static {...}代码以递归方式初始化记录器,然后才能初始化自己的记录器?如果多个类调用Logger.getLogger(String)包记录器的方法(导致总体上多次调用,例如两者bar.Bazbar.FooBaz获取记录器bar),这会产生任何负面影响吗?

import java.util.Enumeration;
import java.util.logging.LogManager;
import java.util.logging.Logger;
public class TestLogger
{
    public static void main(String[] args)
    {
        // Create the logger directly
        Logger.getLogger("foo.Bar");
        // Create the logger objects step-by-step
        Logger.getLogger("bar");
        Logger.getLogger("bar.Baz");
        // Put the available loggers to output
        Enumeration<String> e = LogManager.getLogManager().getLoggerNames();
        while(e.hasMoreElements()) …
Run Code Online (Sandbox Code Playgroud)

java logging java.util.logging

6
推荐指数
1
解决办法
1656
查看次数

如果App Engine自动将stdout和stderr记录到INFO&WARNING,为什么要使用logging.properties?

根据Google App Engine for Java的文档:

App Engine Java SDK在appengine-java-sdk/config/user /目录中包含模板logging.properties文件.要使用它,请将文件复制到WEB-INF/classes目录(或WAR中的其他位置),然后将系统属性java.util.logging.config.file复制到"WEB-INF/classes/logging.properties"(或无论您选择哪条路径,相对于应用程序根目录.您可以在appengine-web.xml文件中设置系统属性,如下所示:

<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
    ...

    <system-properties>
        <property name="java.util.logging.config.file" value="WEB-INF/classes/logging.properties" />
    </system-properties>

</appengine-web-app>
Run Code Online (Sandbox Code Playgroud)

Google Plugin for Eclipse新项目向导会为您创建这些日志记录配置文件,并自动将它们复制到WEB-INF/classes /.对于java.util.logging,必须将system属性设置为使用此文件.

If your write to standard out or standard error, that will automatically get logged as INFO or WARNING.

那么,为什么需要使用logging.properties文件?

这是否可以为您提供对日志记录的额外控制?

java logging google-app-engine java.util.logging

5
推荐指数
1
解决办法
4664
查看次数

打开Flying Saucer java.util.logging输出

我正在使用iText和Flying Saucer编译PDF,不幸的是,在编译时我似乎无法从Flying Saucer获得任何输出.我真的希望能够看到内部发生了什么,以便能够调试我面临的当前问题.

如何为Flying Saucer打开java.util.logging?我目前正在使用SLF4J/Logback.

itext java.util.logging flying-saucer

5
推荐指数
1
解决办法
1570
查看次数