[小明带你玩儿Photon]4.一起来看日志

一,写在前面

前面几个系列的的博客基本上把Photon的基础功能介绍的差不多了,然后在开发客户端的时候,我们发现客户端连接到服务端后的行为和预想的不一致,那么这个时候该如何确定服务端是否运行的和预期一样呢,这个时候,日志就出场了.

二,Pohton日志模块的介绍.

1.日志框架

Photon使用了log4net作为日志框架,关于它的文档:http://logging.apache.org/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的相对路径.

例子:

<Default
    MinimumTimeout="5000"
    MaximumTimeout="30000"
    LogFileLocation="..MyLogFolder"
>

②.托管的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.

例子:

<appender name="A1" type="log4net.Appender.RollingFileAppender">
        <file type="log4net.Util.PatternString" value="%property{Photon:UnmanagedLogDirectory}\PhotonCLR.log" />
        <!-- snip -->
    </appender>

③.程序日志

内容:每一个被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:

代码:

<logger name="Photon.SocketServer.ApplicationBase">
    <level value="DEBUG"/>
</logger>

来自{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 4530
2013-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
原文地址:https://www.cnblogs.com/WongSiuming/p/4953341.html