【问题标题】:log4net with asp.net mvc - can't watch file for changes带有 asp.net mvc 的 log4net - 无法查看文件的更改
【发布时间】:2012-06-11 15:25:35
【问题描述】:

因此,在控制台 .Net 应用程序中,我可以使用(powershell 命令)get-content .\log.log -Wait 观看我的所有 log4net 事件流,这类似于 linux tail 命令,我假设在引擎盖下使用 FileSystemWatcher。

由于某种原因,每当我有一个 asp.net Mvc 应用程序时,这将无法正常工作。需要明确的是,日志文件被写入。我可以根据需要多次get-content .\log.log 并获得最新结果,但使用-wait 参数我永远不会看到更改滚动过去。

有人对这里可能发生的事情有任何见解吗?

【问题讨论】:

    标签: asp.net asp.net-mvc logging powershell log4net


    【解决方案1】:

    更新:为我的案例找到了一个可行的解决方案,不确定这是否会对您有所帮助。

    我没有使用 PowerShell,而是下载了 win-bash,现在我正在使用这个熟悉的 Unix 命令,它非常适合我。

    tail -f access.log
    

    我对 .Net 编程不太熟悉。在您的情况下,使用 win-bash 项目的 bash.exe 而不是 PowerShell 可能是一个可行的解决方案吗?


    我在尝试在 PowerShell 中“跟踪”Apache 访问日志时遇到了类似的问题。

    Get-Content .\access.log -Wait
    

    我注意到,当我的 Apache HTTP 服务器运行时,它有一个可访问 access.log 的句柄,而 -Wait 不起作用。停止 HTTP 服务器会释放句柄,当我使用文本编辑器对 access.log 进行手动更改时,我的 PowerShell 窗口会立即在控制台中反映更改。

    所以我假设如果其他程序打开了文件的句柄,则更改不会反映到控制台。不幸的是,到目前为止我还没有找到解决这个问题的方法。

    【讨论】:

    • 我确实认为问题在于文件锁定,但我更担心 log4net 根本不应该这样做!我希望更多的配置设置可以释放该锁。顺便说一句,为什么选择 win-bash 而不是 cygwin?
    • 我以前用过 cygwin,但现在我没有安装 cygwin,win-bash 似乎又快又简单。刚刚下载并开始使用 bash.exe,而 cygwin 则需要安装。如果我碰巧需要更多类似 Unix 的环境,我可能会放弃 win-bash 并重新开始使用 cygwin。
    猜你喜欢
    • 1970-01-01
    • 2017-11-27
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 2012-05-26
    • 1970-01-01
    相关资源
    最近更新 更多