我特意寻找最新,最现代SysLogHandler的java.util.logging.
我发现一些可以追溯到2001年至2003年,现在大部分都没有得到支持.
我知道这syslog是一个非常静态的服务,我想在自己写一些东西之前,如果有任何新的处理程序实现支持Java 1.5和更新的功能.
我对任何其他日志框架或包装器/代理库都不感兴趣.
我不是在寻找SLF4J或任何其他替代日志框架,如本问题所示.
我正在使用Tomcat 7.0.28,在Ubuntu上的OpenJDK 1.7下运行,我正在尝试修改java.util.logging.SimpleFormatter使用的格式化字符串.根据该类的Javadocs,我可以指定属性java.util.logging.SimpleFormatter.format来更改格式.事实上,当我在Eclipse中运行我的webapp并在我的logging.properties文件中更改此属性时,它可以工作.
但是,当我将应用程序部署到Tomcat时,此属性似乎没有任何效果.我确信我的属性文件正在被正确读取,因为我对它做的其他更改确实生效了(我正在使用文件读取属性)
LogManager.getLogManager().readConfiguration(new FileInputStream(file))
Run Code Online (Sandbox Code Playgroud)
where文件是通过我的web.xml文件中的参数配置的.我已经尝试将该文件放在WEB-INF/classes/logging.properties中,但行为没有变化.
SimpleFormatter的Javadocs指定如果属性文件和系统属性都指定格式化字符串,则系统属性优先.我已验证未设置系统属性
context.log ("Formatting system property is " + System.getProperty("java.util.logging.SimpleFormatter.format"));
Run Code Online (Sandbox Code Playgroud)
在ServletContextListener.contextInitialized方法中.
这是我的记录属性文件
handlers=java.util.logging.ConsoleHandler
# Default logging level for root logger
.level=FINE
# Set the level for the ConsoleHandler
java.util.logging.ConsoleHandler.level=FINE
java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=[%1$tF %1$tr] %3$s %4$s: %5$s %n
Run Code Online (Sandbox Code Playgroud)
我已经尝试了我能想到的一切,包括修改TOMCAT/conf和JRE_HOME/lib目录中的logging.properties.似乎没有任何区别.
我使用JDK日志记录作为日志框架,SLF4J作为简单的外观.当我记录不同级别的日志时,我有一些疑问.
SLF4J具有以下日志级别
跟踪(最不严重)
调试
信息
警告
错误
致命(最严重)
JDK日志记录具有以下日志级别
严重(最高值)
警告
INFO
CONFIG
FINE
FINER
FINEST(最低值)
如果我想将日志级别设置为DEBUG,那么在JDK日志记录中该级别不可用.任何人都可以解释一下我们如何在这种情况下获得DEBUG级别的日志记录.我们是否需要针对这种情况进行任何其他配置?
更新
这是我的属性文件配置
handlers = com.amc.logging.handlers.DebugLogHandler
com.amc.logging.handlers.DebugLogHandler.pattern = c:/logs/debug_log.log com.amc.logging.handlers.DebugLogHandler.level = FINE com.amc.logging.handlers.DebugLogHandler.formatter = java.util.logging .SimpleFormatter com.amc.logging.handlers.DebugLogHandler.append = true
请让我知道我哪里出错了.
我试图使用包来反馈 JSON请求体的传入PUT请求,org.codehaus.jackson我收到错误消息The request sent by the client was syntactically incorrect.如何在Pivotal TC服务器日志中获取更详细的日志/错误消息,例如catalina.log?
我已将以下行添加到logging.properties:
org.codehaus.level = FINEST
Run Code Online (Sandbox Code Playgroud)
但NO从信息org.codehaus虽然显示网页上的错误信息会显示在我的日志.也许codehaus不支持Java日志记录,我应该配置J4Log或类似的另一个日志记录工具?
我的Jackson版本是1.9.13,我使用的是Spring Tools Suite的 Pivotal tc服务器(3.8).
HI,
在我们的Web应用程序中,它打印所有日志,如Spring和JSF jars文件.这对我们来说不是必需的.如何在log4j.xml文件中设置仅针对我们的应用程序进行过滤?
更新
以下是我们用于日志记录的配置.你能告诉我它是否正确吗?我必须在文件中添加logger元素?
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<!-- Log4j Configuration file to log the messages into different logfiles -->
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="DEBUG" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="D:/logs/DEBUGFILE.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %p - %m%n"/>
</layout>
<filter class="org.apache.log4j.varia.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
</appender>
<appender name="INFO" class="org.apache.log4j.RollingFileAppender">
<param name="File" value="D:/logs/AUDIT_TRAIL.log"/>
<param name="Append" value="true"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="2"/>
<layout …Run Code Online (Sandbox Code Playgroud) 我正在使用Java默认记录器,现在它正在输出很多无用的垃圾,这里有一个例子,这行代码:
log.info("Logging pointless information...")
Run Code Online (Sandbox Code Playgroud)
将输出所有这些:
Oct 26, 2011 9:37:57 PM java.util.logging.LogManager$RootLogger log
INFO: Logging pointless information...
Run Code Online (Sandbox Code Playgroud)
除了第二行,我不需要知道任何事情.我怎样才能删除这些垃圾?我想要的只是简单的文本记录.
我使用以下代码将Java Logger重定向到登录文件:
Handler handler = new FileHandler("test.log", LOG_SIZE, LOG_ROTATION_COUNT);
Logger.getLogger("").addHandler(handler);
Run Code Online (Sandbox Code Playgroud)
但它以XML格式登录.我希望完全像输出(即纯文本).我怎样才能做到这一点?
我尝试了SLF4J FAQ中的简单示例:
package com.aed.tests.logging;
import org.slf4j.LoggerFactory;
public class TestLogging
{
public TestLogging()
{
// TODO Auto-generated constructor stub
}
/**
* @param args
*/
public static void main(String[] args)
{
String s = "Hello world";
try
{
Integer i = Integer.valueOf(s);
}
catch(NumberFormatException e)
{
LoggerFactory.getLogger("simplelogger").error("Failed to format {}", s, e);
LoggerFactory.getLogger("simplelogger").error("Without parametrized string", e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是输出:
15:33:51,248000000 [SEVERE]simplelogger: Failed to format Hello world
15:33:51,275000000 [SEVERE]simplelogger: Without parametrized string
Run Code Online (Sandbox Code Playgroud)
我使用java.util.logging作为日志记录实现,使用以下logging.properties
# Properties file which configures the …Run Code Online (Sandbox Code Playgroud) 我正在尝试调试ssh-slaves的行为,但来自https://wiki.jenkins-ci.org/display/JENKINS/Logging的jenkins文档极度不完整.
我添加了一个新的记录器并添加了:
添加的新日志仍然没有更新.
另外,我没有找到关于如何启用所有内容,空白,启动或什么的日志记录的信息?
更新:我试图添加-Djava.util.logging.loglevel=FINE到命令行启动jenkins,但令我惊讶的是它对JENKINS_LOG没有任何影响,但它确实对您可以在GUI上检查的日志产生影响.
我有一个简单的设置来记录消息:JDK 8 Update 65和Eclipse Mars
import java.util.logging.Logger;
public class Example {
private final static Logger LOGGER = Logger.getLogger(Example.class.getName());
public static void main(String[] args) {
LOGGER.info("Test");
}
}
Run Code Online (Sandbox Code Playgroud)
我希望得到一个输出stdout,就像使用一样System.out.println();.
但它会打印出来stderr,这会在eclipse控制台上产生一个红色字体:
我知道我可以通过编写自定义来改变这种行为Handler,但我想知道为什么默认输出会出现在?stderr而不是stdout?
记录器应该stdout用于fine+ info并stderr用于severe级别.