标签: java.util.logging

在glassfish中安装log formater

我不喜欢它的输出com.sun.enterprise.server.logging.UniformLogFormatter可能是统一的但不是很有帮助.因此,在第一步中,我只是将其替换为java.util.logging.SimpleFormatter.这个实际工作正常,但有一个java.lang.ClassCastException例外:

__PRE__

Beeing一个完美主义者我想摆脱这个例子,我想知道我是否可以从com.sun.enterprise.server.logging.UniformLogFormatter创建我自己的子类,并以某种方式将这个类安装到glassfish中.

但我找不到有关如何在Glassfish中安装自定义日志格式化程序的任何信息.有没有人指出这个问题?

glassfish java-ee java.util.logging

4
推荐指数
1
解决办法
2858
查看次数

如何在Java中设置Appengine DataStore的loglevel

logging.properties我的Java AppEngine项目(使用java.util.logging)中有一个文件,如下所示:

# Set the default logging level for all loggers to WARNING
.level = INFO

# tighten logging on the DataNucleus Categories
DataNucleus.JDO.level=WARN 
# - All messages general to JDO
DataNucleus.JPA.level=WARN 
#  - All messages general to JPA
DataNucleus.Persistence.level=WARN 
#  - All messages relating to the persistence process
DataNucleus.Query.level=WARN 
#  - All messages relating to queries
DataNucleus.Lifecycle.level=WARN 
#  - All messages relating to object lifecycle changes
DataNucleus.Cache.level=WARN 
#  - All messages relating to the DataNucleus Cache …
Run Code Online (Sandbox Code Playgroud)

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

4
推荐指数
1
解决办法
1149
查看次数

Tomcat6似乎没有加载我的LogFormatter类

我想在Tomcat6中自定义我的日志消息,并创建了一个类"MyFormatter",如下所示:

public class LogFormatter extends Formatter {

@Override
public String format(LogRecord record) {
    StringBuilder sb = new StringBuilder();

    sb.append("LOLCAT--")
            .append(new Date(record.getMillis()))
            .append(" \t")
            .append(record.getThreadID())
            .append(" \t")
            .append(record.getSourceMethodName())
            .append(" \t")
            .append(record.getSourceClassName())
            .append(" \t")
            .append(record.getLevel().getLocalizedName())
            .append(": ")
            .append(formatMessage(record))
            .append(System.getProperty("line.separator"));

    return sb.toString();
    }
}
Run Code Online (Sandbox Code Playgroud)

我把它打包成一个.jar并放在$ {catalina.home}/lib中.

在我的logging.properties文件中,我添加了以下内容:

1catalina.org.apache.juli.FileHandler.level = FINE
1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
1catalina.org.apache.juli.FileHandler.prefix = lolcat.
1catalina.org.apache.juli.FileHandler.formatter = my.package.LogFormatter
Run Code Online (Sandbox Code Playgroud)

在尝试不同的包装,不同的配置后,我决定尝试内置的"org.apache.juli.OneLineFormatter" - 这完美地运作.所以配置应该没问题.

问题依然存在,为什么Tomcat6加载我的类?

java logging classloader tomcat6 java.util.logging

4
推荐指数
1
解决办法
155
查看次数

SLF4J:Bridge vs Migrator JAR

SLF4J(1.7.5,但实际上是任何现代版本)附带了几个"over"(迁移器)JAR:

  • jcl-over-slf4j-1.7.5.jar
  • log4j-over-slf4j-1.7.5.jar

......以及"to"(桥梁)JAR:

  • jul-to-slf4j-1.7.5.jar

根据他们的文档,迁移者:

...从[JCL/log4j]轻松[s]迁移到SLF4J.此jar文件旨在作为[JCL/log4j]的替代品.它实现了[ir]公共API但在下面使用SLF4J,因此名称"over"SLF4J.

而JUL桥:

将所有传入的jul记录路由到SLF4j API.

  1. 难道我用jcl-over-slf4j-1.7.5.jar的时候我有一个记录使用JCL代码,但我想它使用SLF4J?或者是其他东西?
  2. jul-to-slf4j-1.7.5.jar什么时候用?这里的"to"一词与"over"的使用方式有何不同?
  3. 为什么JUL没有"过度"的JAR?为什么JCL和log4j没有"to"JAR?

java logging log4j slf4j java.util.logging

4
推荐指数
1
解决办法
710
查看次数

在java.util.logging中,什么是全局记录器?

java.util.logging日志记录框架中有一个Logger名为的特殊实例"global",但我找不到任何有关其预期用途的文档.Logger.getGlobal()刚才说的文件

使用名称返回全局记录器对象Logger.GLOBAL_LOGGER_NAME.

Logger.GLOBAL_LOGGER_NAME反过来,只记录为

GLOBAL_LOGGER_NAME 是全局记录器的名称.

我相当广泛的搜索没有找到任何更有用的文档.

什么是全球记录器用于什么?这是在我遗漏的地方记录的吗?

java logging java.util.logging

4
推荐指数
1
解决办法
6021
查看次数

将所有System.out写入文件

我有一个大型程序,我使用System.out进行调试.但我希望能够将所有System.out同时记录到一个文件中,所以即使我的程序没有在控制台中运行,所有System.out都会写入文件,我将能够看到它程序运行或以后的任何时刻.

顺便说一句,抓取所有程序并使用记录器而不是System.out语句是不明智的!

我试过java -jar myjar.jar > sysout.txt但它没有记录java logger实用程序记录的异常.

java logging java.util.logging system.out

4
推荐指数
1
解决办法
851
查看次数

Java 记录器 - 令牌的撇号问题

我有一些无法解释的行为java.util.logging。让我们来看看这两个样本:

第一的:

boolean var = false;
log.log( Level.WARNING, "Cant {0}", new Object[] { var } );
Run Code Online (Sandbox Code Playgroud)

输出:

Cant false
Run Code Online (Sandbox Code Playgroud)

第二:

boolean var = false;
log.log( Level.WARNING, "Can't {0}", new Object[] { var } );
Run Code Online (Sandbox Code Playgroud)

输出:

不能{0}

为什么包含撇号 ( ' ) 会导致记录器不扩展令牌?

java logging java.util.logging

4
推荐指数
1
解决办法
1525
查看次数

如何在这个简单的Java Logging实现中附加日志文件?

我有以下课程来创建和管理一个Logger.每当跨代码和程序执行时,都会使用对静态getLogger() catch块的调用来记录.

public class Log {
    private static final Logger logger = Logger.getLogger("MyLog");  

    public static void iniciarLog() throws IOException {
        FileHandler fh;  

        try { 
//          fh = new FileHandler(System.getProperty("user.home")+System.getProperty("file.separator")+"TorrentDownloader.log");  
            fh = new FileHandler("%h/TorrentDownloader.log");  
            logger.addHandler(fh);
            SimpleFormatter formatter = new SimpleFormatter();  
            fh.setFormatter(formatter);  

            logger.info("Se inició el log"); 
        } catch (SecurityException | IOException e) {  
            logger.severe("Error al crear el log");
        } 
    }

    public static Logger getLogger() {
        return logger;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如何附加到此类日志文件?我见过的所有例子都改变了很多我喜欢的实现,因为它清晰,简洁.

java logging java.util.logging

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

使用java.util.logging Autoflush在调试期间刷新流处理程序

我一直试图在谷歌上查找这个答案一段时间,并认为我只是来这里寻找答案.

在生产过程中,这个设置工作正常,因为它打印到stdout和stderr,我将它分开并解析以供以后使用,但在开发期间,我们希望看到这些日志记录操作在它们发生时打印,即每个日志记录.我认为java将此称为自动刷新.我似乎无法找到我可以更改我具有的流处理程序对象的缓冲区大小,以解决此问题.

我有一些选择如下:

  1. 在Formatter中将日志打印到stdout
  2. 每次调用方法后刷新处理程序(可能使用groovy注释)
  3. 调试期间启用控制台处理程序

我使用java.util.logging来处理我的应用程序完成的所有日志记录,我们使用以下代码创建一个根记录器:

public Logger buildLogger()
{
    Logger log = Logger.getLogger("") //TODO update when JDK updatesLogger.getGlobal() is what we would like to use here
    log.setLevel(Level.WARNING)
    log.setUseParentHandlers(false); //Turn off any Parent Handlers
    Handler[] handlers = log.getHandlers();
    for(Handler handler : handlers) {
        log.removeHandler(handler);
    }
    log.addHandler(soh); //Add stdOut Handler
    log.addHandler(seh); //Add stdErr Handler
    return log;
}
Run Code Online (Sandbox Code Playgroud)

处理程序在这里

public StreamHandler buildsoh()
    {
        def soh = new StreamHandler(System.out, formatter)
        soh.setLevel(Level.ALL); //Default StdOut Setting
        return soh;
    }

    public StreamHandler buildseh() …
Run Code Online (Sandbox Code Playgroud)

java groovy logging java.util.logging

4
推荐指数
1
解决办法
3153
查看次数

有没有办法禁用 java.util.logging 并稍后重新启用它?

我正在使用一个库来记录一堆我不想记录的东西。它正在使用java.util.logging.

我也不想完全禁用它的日志记录,因为它的一些日志很有用。由于仅在我运行某个任务时才记录不需要的行,如果有禁用和启用日志记录的全局方式,它将解决我的问题。

理想情况下是这样的:

disableLogging();
taskThatMakesUnnecessaryLogs();
enableLogging();
Run Code Online (Sandbox Code Playgroud)

java logging java.util.logging

4
推荐指数
1
解决办法
3221
查看次数