【问题标题】:Better cleanup after protocolLogging() on UniVerse?在UniVerse 上的protocolLogging() 之后进行更好的清理?
【发布时间】:2014-08-05 15:18:15
【问题描述】:

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

有没有办法一开始就防止生成空日志文件?

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

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

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

【问题讨论】:

    标签: universe u2


    【解决方案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 调度程序每月清理日志。

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

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

    内森校长
    国际频谱
    http://www.intl-spectrum.com

    【讨论】:

    • 感谢您在回答中提供的选项。我也感谢您挑战日志记录策略。我必须验证状态代码,因为无论如何都要构建和提交 HTTP 请求,所以协议日志记录在生产中可能是多余的。我将不得不在我的 Windows Server 上使用语法,但这应该让我走上正轨。谢谢!
    • 日志记录在生产环境中可能是多余的,但请确保您为自己留出打开它的选项。有时 Http 调用由于某种原因而失败,您需要确保有失败的日志。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-19
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-03-21
    • 1970-01-01
    相关资源
    最近更新 更多