1

我有一个用于通过网络服务发送电子邮件的基本程序。我想利用该protocolLogging()功能来捕获与 Web 服务交互时有时会出现的任何问题。但是,我不想被所有的成功日志淹没(现在我每次程序执行时都会生成一个日志文件)。将日志级别设置为 3(或 1),成功运行后仍会生成一个空文件。

有没有办法首先防止生成空日志文件?

如果没有,有没有比在程序中打开日志目录并删除刚刚创建的记录(假设其他一切都运行成功)更好的方法来清理它们?我的日志目录当前不是 UniVerse type-19 文件或任何东西。

全天重复使用一个日志文件会更好吗?如果我更改代码来执行此操作,是否会对性能产生影响?这个程序是一个有时会被大量使用的子程序。

我在 Windows Server 2008 R2 上运行 UniVerse v11.2.3。

4

1 回答 1

1

当您使用时,protocolLogging()您不会获得任何速度优势,将所有内容记录到一个文件而不是像您拥有的多个文件。当您打开日志记录时,它仍然会打开一个文件,然后当您关闭日志记录时,当您只有一个日志文件时,它仍然会写入和关闭该文件。

有 3 种方法可以清理垃圾文件。

1) 创建一个 .BAT 文件以在一天结束时在 Windows 调度程序中运行

cleanupemptylog.bat
for %F in ("c:\ud\TEST\*.log") do if %~zF equ 0 del "%F"

2) 使用 UniVerse Phantom 进程来做同样的事情。如果需要,您可以创建一个子程序来进行更好的检查。

3) 在当前子程序的末尾运行相同的命令:

EXECUTE '!for %F in ("*.log") do if %~zF equ 0 del "%F"'

这将增加您现有子例程的开销,但可能并不明显。

如果您想根据当前日期使用单个日志,那么您可以使用幻影或 Windows 调度程序每月清理日志。

IE。删除所有超过 5 天的日志文件。

forfiles -p ""c:\ud\TEST\*.log"" -s -m *.* -d -5 -c "cmd /c del @path"

Nathan Rector
International Spectrum
http://www.intl-spectrum.com

于 2014-08-05T15:44:13.767 回答