Tag: 日志记录

为什么将org.slf4j.api添加到依赖项会导致在注册表错误中找不到应用程序?

如果RCP行为中有任何逻辑,我绝对不明白。 我正在尝试记录内部视图。 我的应用程序运行正常,直到我添加了对org.slf4j.api依赖 代码中没有其他任何内容被更改。 但这种依赖性变化导致了这种荒谬的错误 !ENTRY org.eclipse.osgi 4 0 2014-01-10 17:25:08.072 !MESSAGE Application error !STACK 1 java.lang.RuntimeException: Application “Try_EclipseRCPView_03.application” could not be found in the registry. The applications available are: org.eclipse.e4.ui.workbench.swt.E4Application, org.eclipse.e4.ui.workbench.swt.GenTopic, org.eclipse.equinox.app.error, org.eclipse.ant.core.antRunner. at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:248) at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLaunche … 如果我删除依赖项,错误消失。 为什么????? UPDATE 最后Eclipse崩溃并删除了我的所有文件(消灭了,这不是一个笑话)。 我认为它甚至不可能。 小心Eclipse平台是由白痴写的。 我很伤心。

Netbeans Logger

我一直在使用Netbeans作为Java的IDE进行开发。 当Netbeans在try-catch块中包含一个语句时,它使用类似Logger.getLogger(MyTestClass.class.getName()).log(Level.SEVERE, null, ex);东西Logger.getLogger(MyTestClass.class.getName()).log(Level.SEVERE, null, ex); 在捕捞区域。 我的问题是 这句话创建的日志文件是什么,在哪里? 我应该创造它吗? 如果是这样,怎么样? 干杯!

如何编写通用日志分析器

我们需要解析几个日志文件并对找到的日志条目运行一些统计信息(例如某些消息的出现次数,出现的峰值等)。 问题是编写一个日志解析器,它将处理几种日志格式,并允许我添加一个新的日志格式,只需要很少的工作。 为了让事情变得简单,我只关注基本上与此类似的日志: [11/17/11 14:07:14:030 EST] MyXmlParser E Premature end of file 所以每个日志条目将包含timestamp , originator (日志消息), level和日志message 。 一个重要的细节是消息可能有多行(例如堆栈跟踪)。 日志条目的另一个实例可能是: 17-11-2011 14:07:14 ERROR MyXmlParser – Premature end of file 我正在寻找一种指定日志格式的好方法,以及为它实现解析器的最适当的技术。 我虽然讲正则表达式,但我认为处理诸如多行消息(例如stacktrace)之类的情况会很棘手。 实际上,当我考虑多行消息的可能性时,为特定日志格式编写解析器的任务本身并不那么容易。 你如何解析这些文件? 理想情况下,我可以将此类内容指定为日志格式: [%TIMESTAMP] %ORIGIN %LEVEL %MESSAGE 要么 %TIMESTAMP %LEVEL %ORIGIN – %MESSAGE 显然,我必须为每个字段分配正确的转换器才能正确处理它(例如时间戳)。 谁能给我一些关于如何以健壮和模块化的方式实现它的好主意(我使用的是Java)?

是否可以将“tail -f”命令输出到java程序?

根据: unix / linux的Java IO实现“tail -f” Java“tail -f”包装器 我认为它可能但我有以下问题。 String TailCommand = “tail -f /path/PATH.txt| grep (…)”; Runtime r = Runtime.getRuntime(); Process p = r.exec(TailCommand); //handle buffer while (running) { // handle output } 进程p终止。 它与没有“top”或“tail -f”的常量更新的命令一起工作正常。 我想知道我是否错过了什么,有一些缓冲限制或其他什么? 我正在使用eclipse,但我想这应该不会对流程行为产生任何影响。 事实上,也许还有另一种简单的方法来解决我错过的问题。 我使用“tail -f”,因为我必须分析相当胖(一些GB)日志,这些日志不断附加并且不打算打开它并读取整个文件。 我只需要控制附加行。 但是我发现没有合适的尾部实现 提前致谢。

访问Tomcat中的详细日志

在Eclipse中执行一个小应用程序时,我从Tomcat服务器得到一个Http Status 500错误,我在Eclipse中运行它… HTTP Status 500 – ——————————————————————————– type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception java.lang.NullPointerException org.apache.struts2.impl.StrutsActionProxy.getErrorMessage (StrutsActionProxy.java:69) com.opensymphony.xwork2.DefaultActionProxy.prepare(DefaultActionProxy.java:185) org.apache.struts2.impl.StrutsActionProxy.prepare(StrutsActionProxy.java:63) org.apache.struts2.impl.StrutsActionProxyFactory.createActionProxy(StrutsActionProxyFactory.java:39) com.opensymphony.xwork2.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:58) org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:500) org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:434) note The full stack trace of the root cause is available in the Apache Tomcat/7.0.8 logs. 来自服务器的此消息表明错误是由“NullPointerException”引起的。 最后一行说“在Apache […]

如何在运行时更改特定用户/线程的日志级别

我正在使用slf4j与log4j 2.0或logback作为实现。 例如,我的s​​ervlet有一个级别为ERROR的记录器,我的服务器产生了servlet的100个线程。 我将在运行时获得一个特殊用户列表。 当我检测到一些连接的特殊用户时。我想将这些特殊用户/线程的日志级别更改为DEBUG,并使其他线程的日志级别不受影响(仍然是ERROR)。 我知道logback中的TurboFilter和log4j 2.0中的DynamicThresholdFilter,但由于我只会在运行时获取特殊用户列表,所以我无法使用它们。 这是我的申请: package com.example.logging; import java.util.HashMap; import java.util.Map; import javax.servlet.http.HttpServlet; import org.slf4j.*; public class App extends HttpServlet { private final Logger Logger = LoggerFactory.getLogger(App.class); Map map = new HashMap(); public App() { map.put(“user1”, “DEBUG”); map.put(“user2”, “DEBUG”); map.put(“user3”, “ERROR”); } public void writeToLogFile(String userName) { if (map.containsKey(userName)) { // do […]

并发log4j

我有自己的日志引擎,它将日志写入带有阻塞队列的单独线程。 为了使用“标准软件”,我正在考虑切换到log4j。 我不希望我的高度并发软件被日志命令放慢速度,这些日志命令将所有内容写入磁盘,就像调用命令一样。 可以将log4j用作垃圾箱吗?

如何使用logger打印exception?

我有一种情况,我想使用记录器打印catch块中捕获的所有exception。 try { File file = new File(“C:\\className”).mkdir(); fh = new FileHandler(“C:\\className\\className.log”); logger.addHandler(fh); logger.setUseParentHandlers(false); SimpleFormatter formatter = new SimpleFormatter(); fh.setFormatter(formatter); } catch (Exception e) { logger.info(e); } 我得到的错误记录器无法应用于java.io.Exception… 我担心的是,如果我在try块中做了很多事情,并且我只保留一个catch块作为catch(Exception e),那么有没有办法使用logger来打印catch块中捕获的任何exception? 注意:我们使用的是java.util.logging.Logger API

特定应用程序使用JULI登录tomcat 7?

我在tomcat 7中使用java系统日志记录,但没有日志记录语句写入日志。 我已将此文件添加到WEB-INF / classes中。 创建了日志文件“new-xyz-test”(所以我至少有一些配置权限),但它是空的 – 没有日志语句打印到它。 handlers=java.util.logging.ConsoleHandler, org.apache.juli.FileHandler org.apache.juli.FileHandler.level=ALL org.apache.juli.FileHandler.directory=${catalina.base}/logs org.apache.juli.FileHandler.prefix=new-xyz-test- java.util.logging.ConsoleHandler.level=ALL java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter com.xyz.level=ALL com.xyz.handlers=org.apache.juli.FileHandler

如何使用Hibernate带来的JBoss日志记录?

我正在编写使用Hibernate的独立java应用程序。 Maven为我带来了jboss-logging库。 我没有使用JBoss。 问题是:我可以只使用这个库登录,还是需要下载一些日志实现,如log4j ?