一,写在前面
前面几个系列的的博客基本上把Photon的基础功能介绍的差不多了,然后在开发客户端的时候,我们发现客户端连接到服务端后的行为和预想的不一致,那么这个时候该如何确定服务端是否运行的和预期一样呢,这个时候,日志就出场了.
二,Pohton日志模块的介绍.
1.日志框架
Photon使用了log4net作为日志框架,关于它的文档:
2.日志文件和位置
日志文件有三种类型:
①.非托管的Photon Socket Server 日志:
内容:由非托管的PhotonSocketServer.exe核心来往里写.Photon的开启/关闭的产生的全部状态信息全都记在这里,还有本地core的异常(像:Photon自己的bug,无效客户端数据导致的序列化错误等).
名字:Photon-(实例名称)-Timestamp.log
位置:/bin_WinXXX/log
日志级别配置:n/a
改变日志文件的位置:设置"LogFileLocation"属性在PhotonServer.config中的每一个实例."LogFileLocation"可以是绝对路径或者是PhotonSocketServer.exe的相对路径.
例子:
②.托管的CLR日志
内容:由托管运行你程序的.NET来写,所有来自CLR的信息被记载在此(例如:加载信息,.NET程序和装配),还有所有用户.net程序中未处理的异常.
名字:PhotonCLR.log
位置:/bin_WinXXX/Photon.local.log4net.
日志等级配置:配置合适的log4net输出器在/deploy/bin_WinXXX/Photon.local.log4net.
改变日志文件位置:配置合适的log4net输出器在/deploy/bin_WinXXX/Photon.local.log4net.-可以使用"Photon:UnmanagedLogDirectory"属性,包含了"LogFileLocation"属性来自PhotonServer.config.
例子:
③.程序日志
内容:每一个被Photon运行的.Net程序可以写它自己的程序日志文件.包含所有的调试输出.
名字:{MyApplication}.log
位置:/deploy/log
改变日志文件位置:配置合适的log4netappender在 /deploy/{MyApplication}/bin/log4net.config中.可以使用"Photon:ApplicationbLogPath"属性,它被默认设置到/deploy/log,可以在SetUp()方法中自己更改.如下:
protected override void Setup() { // log4net log4net.GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(this.ApplicationRootPath, "log"); var configFileInfo = new FileInfo(Path.Combine(this.BinaryPath, "log4net.config")); if (configFileInfo.Exists) { LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance); XmlConfigurator.ConfigureAndWatch(configFileInfo); } }
日志等级配置::配置合适的log4net输出器在 /deploy/{MyApplication}/bin/log4net.config.
三.常见问题
1.怎么才能日志输出每次客户端的连接和断开?
首先,把下面内容添加到你应用的log4net.config:
代码:
来自{MyApplication}.log:Successful connect:
输出:
2013-05-02 11:19:02,506 [23] DEBUG Photon.SocketServer.ApplicationBase [(null)] - OnInit - ConnID=17, IP 127.0.0.1 on port 45302013-05-02 11:19:02,506 [23] DEBUG Photon.SocketServer.ApplicationBase [(null)] - OnInit - response sent to ConnId 17 with SendResult Ok
断开连接:
2013-05-02 11:19:07,608 [24] DEBUG Photon.SocketServer.ApplicationBase [(null)] - OnDisconnect - ConnID=17