使用log4Net输出调试信息
在上一篇搭建服务器端的项目基础上,使用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\
使用log4Net输出调试信息的更多相关文章
- js操作dom---创建一个域来输出调试信息
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- 在MFC中,使用控制台Console输出调试信息
1.在MFC的应用类的InitInstance()函数里添加: AllocConsole(); 有时候需要调整这行代码在InitInstance函数的位置 2.继续添加以下代码 freopen(&qu ...
- 使用OutputDebugString输出调试信息
在编写控制台程序的时候我们经常会使用printf输出调试信息,使我们了解程序的状态,方便调试,但是当编写非控制台程序的时候这种方法就行不通了,那我们应该怎么办?上网查了一些方法,大致就如下几种 使用L ...
- shell输出调试信息
[shell输出调试信息] 1.使用trap命令 trap命令用于捕获指定的信号并执行预定义的命令. 其基本的语法是: trap 'command' signal 其中signal是要捕获的信号,co ...
- Delphi中使用Dos窗口输出调试信息
在项目文件 *.DPR (Project->View Source) 里加上{$APPTYPE CONSOLE} 然后,在需要输出处加上 Writeln(‘your debug messa ...
- 【OT1.0 + TP3.2】开启trace调试、输出调试信息、开启自定义菜单
1.开启trace调试 A- 后台系统设置 show-page-trace = 1 B-config.php文件.配置 show-page-trace = true 2.输出调试信息 很奇怪,OT竟然 ...
- Delphi RAD Berlin OutputDebugString 输出调试信息
Delphi RAD Berlin Event Log.OutputDebugString 输出调试信息,仅在win VCL下可以用.OutputDebugString(PChar('hellowor ...
- 跟踪Makefile输出调试信息
/********************************************************************* * 跟踪Makefile输出调试信息 * 说明: * 有时 ...
- Qt 使用#define+qDebug()输出调试信息
/******************************************************************************************* * Qt 使用 ...
随机推荐
- oracle--delete truncate drop的区别
一.delete 1.delete是DML,执行delete操作时,每次从表中删除一行,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作,但要注意表 ...
- pytorch 查看中间变量的梯度
pytorch 为了节省显存,在反向传播的过程中只针对计算图中的叶子结点(leaf variable)保留了梯度值(gradient).但对于开发者来说,有时我们希望探测某些中间变量(intermed ...
- PyQt5笔记之菜单栏
目录 菜单栏 创建单层菜单 创建多层菜单 右键打开菜单 官方菜单实例 菜单常用方法 菜单栏 创建单层菜单 import sys from PyQt5.QtWidgets import QApplica ...
- DirectX:Vector
Tag DirectX下的博客主要用于记录DirectX的学习过程,主要参考<DirectX 12 3D 游戏实战开发>. Vector in DirectX Shader的编写离不开数学 ...
- 前端学习:JS(面向对象)代码笔记
前端学习:JS(面向对象)代码笔记 前端学习:JS面向对象知识学习(图解) 创建类和对象 创建对象方式1调用Object函数 <body> </body> <script ...
- Redis(六)Lua脚本的支持
Redis为什么需要Lua脚本的支持 当应用需要Redis完成一些Redis命令不支持的特性时,要么扩展Redis client或者更甚至编写c扩展Redis server.这都大大造成了应用的实现的 ...
- STM32 串口通信基础知识
1.串口通信简介 通信接口的两种方式: 并行通信 -传输原理:数据各个位同时传输. -优点:速度快 -缺点:占用引脚资源多 串行通信 -传输原理:数据按位顺序传输. -优点:占用引脚资源少 -缺点:速 ...
- js获取页面所有搜索条件
<div class="search"> 产品简码:@Html.TextBox("ProCode", "") ...
- vs2017 项目生成时不产生xml文件的方法
在项目.csproj文件 <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' & ...
- ansible简易使用
一.本地环境: centos 7 192.168.10.10 主控机 centos 7 192.168.10.130 被控机 Windows7 192.168.10.13 ...