0

我是 Photon 和 Unit3d 的新手,所以我刚刚安装了一个 photon 服务器并使用log4net.config制作了一个小示例脚本,但我没有在我的 photonserver 唯一信息中看到任何调试消息,我修改了 log4net.config。

我的xml代码:

    <?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">

  <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p %-30.30c{2} %m% [%t] [%x]%n" />
    </layout>
  </appender>

  <!-- "normal" log file appender -->
  <appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="%property{Photon:ApplicationLogPath}\\sOnline.log" />
    <!--param name="File" value="log\Lite.log" /-->
    <param name="AppendToFile" value="true" />
    <param name="MaxSizeRollBackups" value="1" />
    <param name="MaximumFileSize" value="250MB" />
    <param name="RollingStyle" value="Size" />
    <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
    </layout>
  </appender>

  <!-- performance counter log file appender -->
  <appender name="CounterAppender" type="log4net.Appender.RollingFileAppender">
    <file type="log4net.Util.PatternString" value="%property{Photon:ApplicationLogPath}\\sOnlineCounter.log" />
    <!--param name="File" value="log\LiteCounter.log" /-->
    <param name="AppendToFile" value="true" />
    <param name="MaxSizeRollBackups" value="1" />
    <param name="MaximumFileSize" value="1MB" />
    <param name="RollingStyle" value="Size" />
    <param name="StaticLogFileName" value="true" />
    <param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
    <layout type="log4net.Layout.PatternLayout">
      <param name="ConversionPattern" value="%d{ABSOLUTE} %m%n" />
    </layout>
  </appender>

  <!-- logger -->
  <root>
    <level value="DEBUG" />
    <appender-ref ref="LogFileAppender" />
    <appender-ref ref="ConsoleAppender" />
  </root>

  <!-- operation data logger -->
  <!-- set level to DEBUG to enable operation data logging-->
  <logger name="OperationData" additivity="false">
    <level value="INFO" />
    <appender-ref ref="LogFileAppender" />
  </logger>

  <!-- performance counter logger -->
  <!-- set level to DEBUG to enable performance counter logging-->
  <logger name="PerformanceCounter" additivity="false">
    <level value="INFO" />
    <appender-ref ref="CounterAppender" />
  </logger>

  <logger name="ExitGames.Diagnostics.Monitoring.CounterSampleSender" additivity="false">
    <level value="INFO" />
    <appender-ref ref="CounterAppender" />
  </logger>
</log4net>

和这个 C# 脚本:

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 sOnline
{
    public class PhotonServer : ApplicationBase
    {
        #region Overload of ApplicationBase
        protected override PeerBase CreatePeer(InitRequest initRequest)
        {
            return new UnityClient(initRequest.Protocol, initRequest.PhotonPeer);
        }

        protected override void Setup()
        {
            var file = new FileInfo(Path.Combine(BinaryPath, "log4net.config"));
            if (file.Exists)
            {
                LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
                XmlConfigurator.ConfigureAndWatch(file);

            }
        }

        protected override void TearDown()
        {

        }
        #endregion
    }
}

这是日志消息

2014-06-02 15:55:36,299 [17] INFO  Photon.SocketServer.ApplicationBase [(null)] - Application start: AppId=sOnline; AppPath=F:\Photon\deploy\sOnline, Type=sOnline.PhotonServer 
2014-06-02 15:55:36,379 [17] INFO  Photon.SocketServer.ApplicationBase [(null)] - Application is stopping: AppId=sOnline
2014-06-02 15:55:36,382 [17] INFO  Photon.SocketServer.ApplicationBase [(null)] - Application stop: AppId=sOnline

请帮帮我 :)

4

2 回答 2

0
<file type="log4net.Util.PatternString" value="%property{Photon:ApplicationLogPath}\\sOnline.log" />

我没有看到为 ConsoleAppender 设置的上述属性。

<root>
    <level value="DEBUG" />
    <appender-ref ref="ConsoleAppender" />

  </root>

将此添加到您的 xml 中并尝试它是否有效。

于 2014-06-03T05:18:20.547 回答
0

如果您在 log4net.config 中使用{Photon:ApplicationLogPath}属性,则需要在Setup方法中指定它(参见下面的代码示例)。

澄清一下-创建了日志文件,但是您只看到“INFO”消息,没有“DEBUG”消息-对吗?
你真的在做任何登录“调试”级别的事情吗?尝试将 DEBUG 日志消息添加到您的设置方法中,如下所示:

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 sOnline
{
  public class PhotonServer : ApplicationBase
  {
    private static readonly ILogger log = LogManager.GetCurrentClassLogger();

    #region Overload of ApplicationBase
    protected override PeerBase CreatePeer(InitRequest initRequest)
    {
        return new UnityClient(initRequest.Protocol, initRequest.PhotonPeer);
    }

    protected override void Setup()
    {
        var file = new FileInfo(Path.Combine(BinaryPath, "log4net.config"));
        if (file.Exists)
        {
            LogManager.SetLoggerFactory(Log4NetLoggerFactory.Instance);
            GlobalContext.Properties["Photon:ApplicationLogPath"] = Path.Combine(this.ApplicationRootPath, "log");
            XmlConfigurator.ConfigureAndWatch(file);
        }

        if (log.IsDebugEnabled)
        {
            log.Debug("Setup done.");
        }
    }

    protected override void TearDown()
    {

    }
    #endregion
  }
}
于 2014-06-23T16:41:08.863 回答