【发布时间】:2015-02-19 04:09:08
【问题描述】:
我有一个许可证日志文件 (TEXTLINE),其中包含用户的详细信息以及他们何时获取或颁发许可证的时间戳。如下所示:
例如:
9:43:58 (app_d) IN: "LICENSE_APP1_NAME" A123456@ABCDEFG
9:44:12 (app_d) 输出:“LICENSE_APP1_NAME”A123456@ABCDEFG
每六个小时它还会记录如下日期:
9:12:41 (lmgrd) TIMESTAMP 2/6/2015
当用户被拒绝许可时,它还具有日志详细信息,如下所示:
6:24:21 (app_d) DENIED: "LICENSE_APP1_NAME" A123456@ABCDEFG(已达到许可用户数。(-4,342:10054 ""))
现在我尝试在 Log Parser 中使用以下命令:
Logparser -i:textline -rtp:-1 "Select text from '[LOGFILEPATH]' where text like '%Licensed number of users already reached%'"
Logparser -i:textline -rtp:-1 "Select text from '[LOGFILEPATH]' where text like '%TIMESTAMP%'"
第一个为我提供了日志显示 License denied 的所有行的列表,第二个为我提供了包含日期的所有行。如果我使用 select '*',它会给出三列,即 LogFilename、Index 和 Text。
我想结合这两个选择。我试过'UNION'但没有用。我想要的输出是,我需要打印所有显示日期和许可证被拒绝行的行,如下所示。(根据索引)
例如:(如果有,请忽略行间距)
9:12:41 (lmgrd) TIMESTAMP 2/6/2015
9:25:32 (app_d) 输出:“LICENSE_APP1_NAME”A123456@ABCDEFG
10:36:40 (app_d) IN: "LICENSE_APP1_NAME" A123456@ABCDEFG
10:36:53 (app_d) 输出:“LICENSE_APP1_NAME”A123456@ABCDEFG
12:38:13 (app_d) 输出:“LICENSE_APP1_NAME”A123456@ABCDEFG
12:43:58 (app_d) IN: "LICENSE_APP1_NAME" A123456@ABCDEFG
15:12:42 (lmgrd) TIMESTAMP 2/6/2015
15:27:41 (app_d) 输出:“LICENSE_APP1_NAME”A123456@ABCDEFG
16:28:30 (app_d) IN: "LICENSE_APP1_NAME" A123456@ABCDEFG
16:28:54 (app_d) IN: "LICENSE_APP1_NAME" A123456@ABCDEFG
18:29:04 (app_d) 输出:“LICENSE_APP1_NAME”A123456@ABCDEFG
18:30:51 (app_d) 输出:“LICENSE_APP1_NAME”A123456@ABCDEFG
如果我可以只在日期行中显示日期,那就更好了。我们可以修剪剩下的部分吗?
此外,我未来的要求将包含一个带有表格的输出,该表格显示包含所有用户详细信息的“用户”列(例如:A123456@ABCDEFG),一个包含用户会话次数的“会话”列(基于日志中“IN”和“OUT”的数量),“总小时数”列使用时间戳的差异来计算他使用许可证的时间,以及“拒绝”列,显示数量由于“已达到许可的用户数量”错误,用户被拒绝许可的次数。如果不是整个代码,我能否获得一些帮助来理解如何实现这一点的想法?提前致谢。
附: A123456@ABCDEFG 和 LICENSE_APP1_NAME 仅作为示例显示。许可证文件维护了许多这样的用户和一些其他应用程序。以后的要求包括从许可证文件中找出连接到每个应用程序的用户。
【问题讨论】: