使用NLog为Silverlight增加日志记录功能

来源:互联网 发布:mac怎么看文件夹路径 编辑:程序博客网 时间:2024/05/16 17:13


     本文介绍如何在Silverlight中加入NLog开源工具实现日志跟踪记录功能,并添加两种输出方式。一种是文件输出。

一种使用tcp连接将日志实时输出到日志窗口中以便实时跟踪程序状态。

 

     NLog 是.net 下的一个日志跟踪工具,支持多种终端输出,如文件、数据库、网络、命令台窗口等。其支援.net、

Silverlight、 Windows Phone 7。并可定制多种标准的输出编排格式,是一款优秀的开源工具。 项目主页为 http://nlog.codeplex.com/ ,官网为http://nlog-project.org/。

 

 

1、将日志信息输出到文本文件中

 

       由于Silverlight默认无读取配置文件的功能,所以需要使用编码方式加入NLog。

       以下是使用文件输出的配置代码,需注意的是由于访问权限,如要使用文件输出则需将SL设置为Out of browser模式

 

并且 require trust 选项设置为真。而且只能存放在指定的文件夹中,示例中specialfolder:MyDocuments 指定了放在“我的文档“ 目录中。

 

        

 

        通常在代码初始化放在Application_Startup之中,接着便可使用日志功能输出调试信息,如下所示:      

        LogManager.GetCurrentClassLogger().Info("test message") ;

        每次调用函数麻烦可以保存为全局对象 G_Logger,然后使用 G_Logger.Info("");

 

2、将日志信息实时输出到独立的可视化窗口中

    

     由于Silverlight不支持命令行窗口输出,所以开始想自己写一个Silverlight 页面作为输出终端。

幸运的是,发现NLog支持第三方的显示工具,输出目标配置模式为 NLogViewerTarget。其原理是使用

socket 发送信息到显示终端中。

       可用的第三方工具为sentinel  http://sentinel.codeplex.com/, 另一工具是 Log2Console(未测试)

     下载并启动sentinel,选择NLog viewer类型,选择 tcp ,端口为4530(需为silverlight socket支持的端口号)

     

      配置代码为 

       

     注意,这里需要指定tcp4而不能是tcp,否则会无法通信!

    同时需要启动策略服务器以支持silverlight 的socket通信, 以下文章有提及 http://blog.csdn.net/banmuhuangci/archive/2009/05/16/4192031.aspx 

 

        这时成功的话在运行测试后会将输出信息输出到sentinel窗口中

        日志信息窗口

      

 

     总结,正所谓磨刀不误砍柴工,一个成熟的开发环境是必须要加入日志跟踪功能的。希望本文能对大家有所帮助。

由于作者个人水平有限,如有不足之处还请指出。如有改进建议本人将十分感激,一切重在交流学习。

 

    本文版权归个人所有,如需转载请注明出处,谢谢。 http://blog.csdn.net/kecp

原创粉丝点击