zoukankan      html  css  js  c++  java
  • [小明带你玩儿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
  • 相关阅读:
    Linux下PHP升级的方法
    centos6 授权文件夹所有用户可用
    重置密码遇到ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using passwor:yes)问题
    MySQL Daemon failed to start. 正在启动 mysqld:[失败]
    MySql取消密码强度验证功能
    twbsPagination.js分页插件
    同一个Tomcat部署多个springboot项目问题
    同一个tomcat部署多个项目导致启动失败
    启动Spring boot项目报错:java.lang.IllegalArgumentException: LoggerFactory is not a Logback
    Vue中关于vue-awesome-swiper插件使用以及要注意的 “坑”
  • 原文地址:https://www.cnblogs.com/WongSiuming/p/4953341.html
Copyright © 2011-2022 走看看