Tag: log4j

可以减少Spring Boot中的堆栈跟踪吗?

是否有可能将堆栈跟踪从exception减少到忽略Springs堆栈? 当我的方法抛出IllegalArgumentException(按预期)并且我在log4j中记录消息和堆栈跟踪时,我得到了Spring堆栈的完整日志,而我真正需要的所有exception抛出的是代码中的相关部分实际上是在玩耍。 例如,下面的堆栈应该减少到8行,忽略org.springframework和forward。 ERROR 2015-10-19 13:36:38,138 ID-TESTPRVR AccountDataValidation -Failed to parse Account Data! java.lang.IllegalArgumentException: Unsupported String length: [4] com.test.util.AccountData.(AccountData.java:105) com.test.AccountDataValidation.getAccountData(AccountDataValidation.java:61) sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) java.lang.reflect.Method.invoke(Method.java:606) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:221) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:137) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:110) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:776) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:705) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:967) org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:869) javax.servlet.http.HttpServlet.service(HttpServlet.java:648) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:843) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.springframework.boot.actuate.autoconfigure.EndpointWebMvcAutoConfiguration$ApplicationContextHeaderFilter.doFilterInternal(EndpointWebMvcAutoConfiguration.java:295) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.springframework.boot.actuate.trace.WebRequestTraceFilter.doFilterInternal(WebRequestTraceFilter.java:102) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:77) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) […]

log4j创建的文件中的主机名

我在Linux机器上使用java 1.4.2(RHEL 5.4)。 我们的应用程序使用log4j进行日志记录 我希望有些appender会在文件名中创建包含hostname的文件。 主机名不应该是硬编码的,而是使用类似于此处的系统属性(请参阅$ {log4j.minutes})。 所以问题是系统属性中是否有主机名。 根据这里 ,没有默认的主机名属性。 这意味着我需要从命令行的代码(-D flag)添加主机名作为系统属性。 我错过了什么吗?

java.util.logging.Logger和log4j

我正在尝试从这里编译代码: http : //www.brackeen.com/javagamebook/#download (第6章),我遇到了麻烦。 我不明白java.util.logging.Logger和log4j如何协同工作,但这似乎是个问题。 我得到的错误都在log.error()或log.warn()方法调用上。 以下是NetBeans的输出: 在里面: DEPS清洁: 删除目录C:\ JB \ NetBeansProjects \ WRServer \ build 删除目录C:\ JB \ NetBeansProjects \ WRServer \ dist 清洁: 在里面: DEPS-JAR: 创建目录:C:\ JB \ NetBeansProjects \ WRServer \ build \ classes 将23个源文件编译为C:\ JB \ NetBeansProjects \ WRServer \ build \ classes C:\ JB \ NetBeansProjects \ WRServer […]

我可以在哪里以编程方式查找log4j日志文件的存储位置?

log4j.properties文件中使用相对路径。 如何以编程方式找到存储日志的绝对路径?

Log4j和syslogappender

我有一个使用log4j SyslogAppender(facility = USER)的java应用程序,我可以看到在端口514上使用tcpdump我的应用程序正在发送预期的日志消息作为数据报,netstat也告诉我syslogd(red hat)正在运行并正在监听0.0 .0.0:514但我没有看到/ var / log / messages中发生任何日志记录。 在我的syslog.conf中,我有 *.info /var/log/messages 我对SyslogAppender的转换模式是 %d{MMM dd HH:mm:ss} %F %L %5p [%t] %m %n” 我无能为力,因为它无法记录或者我应该在哪里找到什么是失败的。 我没有足够的权限在机器上启动/停止syslogd或手动运行以启用详细的调试日志。 关于我如何进行的任何指示? 编辑: 下面的Appender private void initSyslog() { SyslogAppender syslogAppender = new SyslogAppender(); syslogAppender.setName(“syslog”); syslogAppender.setLayout(new PatternLayout(“%d{MMM dd HH:mm:ss} %F %L %5p [%t] %m %n”)); syslogAppender.setFacility(“USER”); syslogAppender.setFacilityPrinting(true); syslogAppender.setSyslogHost(“localhost”); syslogAppender.activateOptions(); Logger.getRootLogger().addAppender(syslogAppender); Logger.getRootLogger.info(“Syslogdone”); […]

Log4j | 更新Appender的日志级别

我的log4j.properties文件 – log4j.rootLogger=INFO, stdout # =============== console output appender ===================== log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=[%d{HH:mm:ss}] %5p: [%c{1}] %m%n # =================== common logging ========================= # The log level for all classes that are not configured below. log4j.logger.petascope=INFO log4j.logger.petascope.wcps=DEBUG log4j.logger.petascope.wcst=DEBUG log4j.logger.petascope.wcs=DEBUG log4j.logger.petascope.wcs2=TRACE 我想在stdout上显示甚至DEBUG和TRACE消息,所以我更改了以下行 log4j.rootLogger=TRACE, stdout 但是当我在Tomcat控制台上查看日志回显时,我没有看到任何变化,我仍然只看到INFO,WARN …消息。

自定义日志记录以在运行时收集消息

有没有办法在运行时创建log4j Logger,将日志消息收集到缓冲区? 我目前有一个记录许多事件的类。 对于需要监视已记录事件的远程应用程序,我只想交换记录到缓冲区然后检索缓冲区的记录器,而不是重构该类。 例如给出类似的东西: Class Foo{ Logger log = ….; public void doSomething(){ log.debug(… .. actual code log.debug(… } } //我想从一些外部代码做什么: String showFooLog(){ Foo f = new Foo(); f.log=new Logger(… f.doSomething(); return f.log.contents(); } 这可能吗? 编辑:找到一个更短的解决方案,从Jare​​d的post中指出(尽管它仍然不是线程安全的)。 谢谢您的帮助。 Logger l = Logger.getLogger( … ); StringWriter writer = new StringWriter(); WriterAppender appender = new WriterAppender( new […]

log4j RollingFileAppender与DailyRollingFileAppender有什么区别

log4j RollingFileAppender和DailyRollingFileAppender什么DailyRollingFileAppender ? 为什么我会用另一个经文呢?

log4j性能

我正在开发一个网络应用程序,我想记录一些信息,以帮助我改进和观察应用程序。 (我正在使用Tomcat6) 首先,我想我会使用StringBuilders,将日志附加到它们,并且任务会像每2分钟一样将它们保存到数据库中。 因为我担心开箱即用的日志记录系统的性能。 然后我做了一些测试。 特别是log4j。 这是我的代码: Main.java public static void main(String[] args) { Thread[] threads = new Thread[LoggerThread.threadsNumber]; for(int i = 0; i < LoggerThread.threadsNumber; ++i){ threads[i] = new Thread(new LoggerThread("name – " + i)); } LoggerThread.startTimestamp = System.currentTimeMillis(); for(int i = 0; i < LoggerThread.threadsNumber; ++i){ threads[i].start(); } LoggerThread.java public class LoggerThread implements […]

Log4J记录器用于不同的类

我想使用Log4J来记录我的java项目。 我在src目录中创建了一个log4j.properties文件,其中包含以下内容: # Root logger option log4j.rootLogger=INFO, file, stdout log4j.logger.DEFAULT_LOGGER=INFO,file2 # Direct log messages to a log file log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.File=file.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p %c – %m%n # Direct log messages to stdout log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L – %m%n log4j.appender.file2=org.apache.log4j.FileAppender log4j.appender.file2.File=file2.log log4j.appender.file2.layout=org.apache.log4j.PatternLayout log4j.appender.file2.layout.ConversionPattern=%d [%t] %-5p %c – %m%n 例如,我只想在我的main方法中使用“DEFAULT_LOGGER”。 所以我写道: static Logger log […]