.Net Framework SDK所带的Duwamish是一个经典的示例,我们现在的很多项目都是按照这个架构设计的,在实际使用中,发现SystemFramework中进行日志记录日志类有时会出现问题,表现在有时候可以记录异常日志到日志文件中,有时却有只是创建了日志文件,而没有记录信息(记录异常到系统日志没有问题),经过仔细分析,发现是以Debug方式编译程序可以记录日志,而以Release编译程序就不能记录日志到文件中,经过分析源程序,在SystemFramework项目的ApplicationLog.vb文件,发现在143行处,下面代码:

        If Not debugWriter Is Nothing Then
            
'Log based on switch level.
            If level <= debugSwitch.Level Then
                
SyncLock debugWriter
                Debug.
WriteLine(messageText) '注:该行存在问题
                debugWriter.Flush
                
End SyncLock
            
End If
        
End If


其中写错误信息到文件的代码为  Debug.WriteLine(messageText),所以它只能在项目编译为Debug状态时运行,而以Release方案编译就不能运行了。只需要将它修改为

                debugWriter.WriteLine(messageText)

那么它就不受项目编译状态的影响了,都可以记录日志文件,它只受web.config中开关配置的影响了。

posted on 2004-10-29 09:43  zhumk  阅读(956)  评论(0编辑  收藏  举报