在上一篇搭建服务器端的项目基础上,使用log4Net进行调试信息输出

http://www.cnblogs.com/fzxiaoyi/p/8439769.html

1.先分析下Photo 自带的服务器端源代码

打开文件夹src-server  C:\Program Files\Photon Server\src-server

这几个文件夹都是服务器端一些源代码,打开任意一个工程查看下别的项目是如何输出调试

这里以Lite项目为例,打开Lite项目

字体加粗的这个MyApplication是启动项目,也可以通过右键解决方案->属性查看启动项目

双击打开MyApplication.CS

F12进入基类LiteApplication

这个类跟我们写的服务器端类一模一样,也是继承之ApplicationBase, 重写了三个抽象方法

很明显红框部份就是我们需要填加的代码..最后使用log.infoFormat输出调试信息.

项目还添加了个lgo4net.config 配置文件

2.开始实现使用log4Net输出调试信息的功能

 using ExitGames.Logging;
using ExitGames.Logging.Log4Net;
using log4net.Config;
using Photon.SocketServer;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace ChatServer
{
//继承自ApplicationBase的类是server的入口程序
class ChatServer : ApplicationBase
{
private static readonly ILogger log = LogManager.GetCurrentClassLogger();
//当有新的客户连接到这个server时被自动调用
protected override PeerBase CreatePeer(InitRequest initRequest)
{
//每次被调用就创建一个继承自PeerBase类的对象用于跟客户端通信
return new ChatPeer(initRequest.Protocol, initRequest.PhotonPeer);
}
//当server启动时被调用
protected override void Setup()
{
log4net.GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(this.ApplicationRootPath, "log"); // log4net
string path = Path.Combine(this.BinaryPath, "log4net.config");
var file = new FileInfo(path);
if (file.Exists)
{
LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
XmlConfigurator.ConfigureAndWatch(file);
} log.Info("Server Setup"); }
//当server停止时被调用
protected override void TearDown()
{
log.Info("Server TearDown");
}
}
}

再把Lite项目中的lgo4net.config 复制一份到我们工程目录下,添加lgo4net.config到项目中.

打开lgo4net.config做下修改,默认输出的是Lite.log, 搜索Lite全部替换成我们的项目名称

ChatServer, 注意要去掉全字匹配,保存.

在lgo4net.config右键属性,复制到输出目录 改为 始终复制.

保存下项目,最终生成解决方案, 运行PhotonControl.exe

选择ChatServer->Start as application 启动应用

打开日志进行查看  Open Logs

ChatServer.log 就是我们生成的普通日志,服务器启动时输出了一句Server Setup

默认所有服务器端日志都保存在C:\Program Files\Photon Server\deploy\log\

最新文章

  1. BZOJ 4614 【Wf2016】 Oil
  2. 让Fiddler能够检测到localhost的http数据
  3. Android——AutoCompleteTextView、Spinner和消息提示
  4. Linux命令(14)文件和文件夹权限管理:chmod
  5. LeetCode 刷题记录(二)
  6. HTTP请求中浏览器缓存
  7. sqlserver中的统计语法
  8. wcf系列5天速成——第二天 binding的使用(2)
  9. mysql主从数据库
  10. 如何创建DLL文件
  11. OpenCV探索之路(二):图像处理的基础知识点串烧
  12. 多种解法解决n皇后问题
  13. mysql 1194 – Table ‘tbl_video_info’ is marked as crashed and should be repaired 解决方法
  14. 获取Ip所在城市名与详细
  15. R语言学习——向量
  16. jquery 入口函数
  17. 你可能不知道的web api
  18. win10 下JDK10的下载安装与环境变量配置
  19. df 查看磁盘大小
  20. Hystrix 使用入门

热门文章

  1. [LeetCode] 17. Letter Combinations of a Phone Number 电话号码的字母组合
  2. Spring Boot 知识笔记(集成zookeeper)
  3. 使用logstash同步mysql数据库信息到ElasticSearch
  4. (五)golang--常用的一些玩意
  5. Qt 编写串口调试助手
  6. 手写bind函数
  7. TortoiseSVN客户端更改新的URL和账号
  8. 优化、分析Mysql表读写、索引等操作的sql语句效率优化问题
  9. 安装oracle时出现的问题
  10. 基于Golang的逃逸分析(Language Mechanics On Escape Analysis)