- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我的代码如下。
public static void main(String[] args) {
// TODO code application logic here
File pcounter_log = new File("c:\development\temp\test.log");
try {
Tailer tailer = new Tailer(pcounter_log, new FileListener("c:\development\temp\test.log",getLogPattern()), 5000,true);
Thread thread = new Thread(tailer);
thread.start();
} catch (Exception e) {
System.out.println(e);
}
}
public class FileListener extends TailerListenerAdapter {
public void handle(String line) {
for (String logPattern : pattern) {
if (line.contains(logPattern)) {
logger.info(line);
}
}
}
}
此处 getLogPattern()
返回一个 ArrayList
,其中包含 [info,error,abc.catch,warning] 等值。运行此代码时,我收到旧日志消息后跟新日志消息。 IE。输出是这样的:
20 May 2011 07:06:02,305 INFO FileListener:? - 20 May 2011 07:06:01,230 DEBUG - exiting readScriptErrorStream()
20 May 2011 07:06:55,052 INFO FileListener:? - 20 May 2011 07:06:55,016 DEBUG - readScriptErrorStream()
20 May 2011 07:06:56,056 INFO FileListener:? - 20 May 2011 07:06:55,040 DEBUG - exiting readScriptErrorStream()
20 May 2011 07:07:01,241 INFO FileListener:? - 20 May 2011 07:07:01,219 DEBUG - readScriptErrorStream()
20 May 2011 07:07:02,245 INFO FileListener:? - 20 May 2011 07:07:01,230 DEBUG - exiting readScriptErrorStream()
20 May 2011 07:07:55,020 INFO FileListener:? - 20 May 2011 07:07:55,016 DEBUG - readScriptErrorStream()
20 May 2011 07:07:56,024 INFO FileListener:? - 20 2011 07:07:55,030 DEBUG - exiting readScriptErrorStream()
20 May 2011 07:08:01,269 INFO FileListener:? - 20 May 2011 07:08:01,227 DEBUG - readScriptErrorStream()
20 May 2011 07:08:02,273 INFO FileListener:? - 20 May 2011 07:08:01,230 DEBUG - exiting readScriptErrorStream()
20 May 2011 07:08:21,234 INFO FileListener:? - 20 May 2011 06:40:02,461 DEBUG - readScriptErrorStream()
20 May 2011 07:08:22,237 INFO FileListener:? - 20 May 2011 06:40:02,468 DEBUG - exiting readScriptErrorStream()
20 May 2011 07:08:23,242 INFO FileListener:? - 20 May 2011 06:41:01,224 DEBUG - readScriptErrorStream()
20 May 2011 07:08:24,250 INFO FileListener:? - 20 May 2011 06:41:01,232 DEBUG - exiting readScriptErrorStream()
20 May 2011 07:08:25,261 INFO FileListener:? - 20 May 2011 06:42:01,218 DEBUG - readScriptErrorStream()
20 May 2011 07:08:26,265 INFO FileListener:? - 20 May 2011 06:42:01,230 DEBUG - exiting readScriptErrorStream()
20 May 2011 07:08:27,272 INFO FileListener:? - 20 May 2011 06:43:01,223 DEBUG - readScriptErrorStream()
20 May 2011 07:08:28,275 INFO FileListener:? - 20 May 2011 06:43:01,231 DEBUG - exiting readScriptErrorStream()
如何避免像这样从日志文件中获取旧日志消息?
最佳答案
哦,天哪,我浪费了一整天的时间认为这是我狡猾的线程,但我现在看到其他人分享了我的痛苦。哦,好吧,至少我不会再浪费一天时间看它了。
但是我确实看过源代码。我确定错误发生在 Tailer.java 文件中:
boolean newer = FileUtils.isFileNewer(file, last); // IO-279, must be done first
...
...
else if (newer) {
/*
* This can happen if the file is truncated or overwritten with the
* exact same length of information. In cases like this, the file
* position needs to be reset
*/
position = 0;
reader.seek(position);
...
似乎文件修改数据可能会在写入数据之前发生变化。我不是为什么会这样的专家。我正在从网络获取我的日志文件,所以可能正在进行各种缓存,这意味着您不能保证更新的文件将包含更多数据。
我已经更新了源代码并删除了这一部分。对我来说,文件被截断/重新创建的字节数完全相同的可能性很小。我引用的是 10MB 的滚动日志文件。
我看到这是一个已知问题 ( IO-279 LINK HERE )。但是,它被标记为已解决,但显然并非如此。我会联系开发人员,看看是否有什么正在筹备中。看起来他们对修复的看法与我相同。
关于java - Apache Commons IO Tailer 传送旧日志消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071275/
Pygame 我想知道是否有人知道如何在触摸或越过某些东西时交换 map 。 这是我的代码: import pygame, sys from pygame.locals import * pygame
我正在尝试使用以下代码将用户传送到他们自己的领域: @EventHandler public static void onPortalTravel(PlayerPortalEvent event) t
我想要对不同选项的简要介绍。 最佳答案 来自 Wikipedia Embedded in an SWF file using the Flash authoring tool (supported i
我正在尝试创建一个简单的程序来刺激二进制系统中恒星的旋转,但是当我运行程序时,其中一个“恒星”出现故障,实际上是围绕给定路径传送到不同位置。我怎样才能解决这个问题?这是代码: import pygam
我不会java(一般用c写) 我怎样才能有效地进行某种位 block 传送方式java中的像素数组内容到窗口上? 我需要(在循环中)将像素[][]传输到窗口上 我可以使用类似的东西 pixels[]
我遇到了无法通过 TestFlight 安装我的应用程序的 Ad Hoc 版本的问题。应用程序下载,但在安装步骤中显示类似“无法安装 YourApp”的内容,控制台上显示以下消息: Sep 17 16
如果我使用 Eazfuscator 混淆 vb.net 程序集并启用符号名称加密(以便我可以使用 Eazfuscator 堆栈跟踪解码器),如果我发送 PDB 文件,这是否有效地撤消?我想发送 PDB
我使用 Delphi 6 Pro 和 DSPACK DirectShow 组件库来创建一个 DirectShow 过滤器,该过滤器从自定义音频源提供 Wav 格式的数据。需要明确的是,我将原始 PCM
我正在尝试发布一个执行一些 RMI 调用的 Java 应用程序。 我需要将其作为 JAR 文件发送(这是一个要求,没有办法解决)。 现在,为了允许某些事情(例如套接字和 RMI 连接),我需要一个 S
在 Vue 3 中,可以使用 Teleport body 的一个组件像这样标记: Open full screen modal! (With teleport!)
由于 Netty Channel 使用单个线程进行入站和出站处理,我很想知道在使用多路复用协议(protocol)(例如 SPDY)时传送入站数据的推荐做法。想到的几个选项: 1) 使用 channe
我基本上想这样做: $_ = "some content that need to be escaped &>|\"$\'`\s\\"; qx{echo $_ | foo} 这里有两个问题。先是$_的
我想使用 Kurento 作为媒体服务器,它将 WebRTC 作为输入并提供 RTSP 流作为 url:rtsp://kurento/streamName 这可能吗? 我看到了https://gith
我的理解是,在 Azure AMS V2 上,您可以进行混合 key 分发,您可以从另一台服务器(例如 S3)流式传输加密的媒体内容,并仅使用 Azure 作为 key 服务器。 This is my
我目前正在尝试通过用于控制视频访问的 PHP 脚本传送 MP4 视频以用于 HTML5 视频(使用 video-js)。经过一些研究,在 stackoverflow article found her
我使用以下命令将 sed 的输出重定向到 tmp 文件: grep --include=*.txt -A 3 -rnw abx/ -F -e 'simple' | sed -n 's#.*/\([^/
我有一个 PHP 文件,它的唯一工作是检查用户是否登录 + 是否设置了 session 变量,然后通过 nginx X-Sendfile 传送文件。它在任何桌面浏览器和以前的任何移动浏览器上都能完美运
我在 2014 年 1 月 24 日悄悄地向 iOS 应用商店交付了一个应用。这是一款仅限 iO7/iPhone 的应用程序,所有内容均已正确交付。截至昨天,我的应用程序已获批准,目前可以在 App
我是一名优秀的程序员,十分优秀!