Is there any way for a custom log4net implementation on the server side?

Options
Hi.

is it possible to use a custom log4net implementation on the server side and to force the default logging of photon to use this implementation?

I get it up and running so far that I can use my own log4net logger but the logs from photon itself do not show up as if I use the ExitGames.Logging.LogManager.GetCurrentClassLogger()...

Any help would be very nice.

Answers

  • chvetsov
    Options
    hi, Serphimera
    did you see InitLogging method?
    did you set your logger factory?
    how do you setup your logger? I mean config file
  • Serphimera
    edited September 2016
    Options
    Hi chvetsov, I see no InitLogging method - there is nothing from photon itself in my logs. I have no logger factory. This is what I use:
    using System.IO;
    using log4net;
    using log4net.Config;
    using Photon.SocketServer;
    using Photon.SocketServer.ServerToServer;
    
    namespace PhotonServerFramework.Application.Implementations
    {
        public class PhotonServerApplication : ApplicationBase
        {
            private static ILog Log { get; set; }
            .
            .
        protected override void Setup()
            {
                #region Log4Net configuration
                GlobalContext.Properties["AppPath"] = BinaryPath;
                GlobalContext.Properties["LogName"] = ApplicationName;
                XmlConfigurator.ConfigureAndWatch(new FileInfo(Path.Combine(BinaryPath, "log4net.config")));
                Log = LogManager.GetLogger(ApplicationName);
                
                #endregion
    
                Log.DebugFormat("Setting up PhotonServerApplication {0}", ApplicationName);
            }
    So with that in place I get an log with the Debug message but nothing else. My config file looks like this:
    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <section name="log4net4" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <log4net>
        <appender name="DebugLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <file type="log4net.Util.PatternString" value="%property{AppPath}\Logs\%property{LogName}.debug.txt" />
          <appendToFile value="true" />
          <rollingStyle value="Composite" />
          <datePattern value=".yyyyMMdd" />
          <maxSizeRollBackups value="-1" />
          <maximumFileSize value="1KB" />
          <preserveLogFileNameExtension value="true" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{ISO8601} [%thread] [%logger] [%level] [%method:%line]: %message%newline%exception" />
          </layout>
          <filter type="log4net.Filter.LevelMatchFilter">
                <levelToMatch value="DEBUG" />
                <acceptOnMatch value="true" />
            </filter>
        </appender>
        <appender name="ProdLogFileAppender" type="log4net.Appnder.RollingFileAppender">
          <file type="log4net.Util.PatternString" value="%property{AppPath}\Logs\%property{LogName}.prod.txt" />
          <appendToFile value="true" />
          <rollingStyle value="Composite" />
          <datePattern value=".yyyyMMdd" />
          <maxSizeRollBackups value="-1" />
          <maximumFileSize value="1KB" />
          <preserveLogFileNameExtension value="true" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{ISO8601} [%thread] [%logger] [%level] [%method:%line]: %message%newline%exception" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="INFO" />
            <levelMax value="FATAL" />
          </filter>
        </appender>
        <appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <file type="log4net.Util.PatternString" value="%property{AppPath}\Logs\%property{LogName}.error.txt" />
          <appendToFile value="true" />
          <rollingStyle value="Composite" />
          <datePattern value=".yyyyMMdd" />
          <maxSizeRollBackups value="-1" />
          <maximumFileSize value="1KB" />
          <preserveLogFileNameExtension value="true" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{ISO8601} [%thread] [%logger] [%level] [%method:%line]: %message%newline%exception" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <levelMin value="ERROR" />
            <levelMax value="FATAL" />
          </filter>
        </appender>
        <appender name="PhotonLogger" type="log4net.Appender.RollingFileAppender">
          <file type="log4net.Util.PatternString" value="%property{AppPath}\Logs\Photon\PhotonLogger.txt" />
          <appendToFile value="true" />
          <rollingStyle value="Composite" />
          <datePattern value=".yyyyMMdd" />
          <maxSizeRollBackups value="-1" />
          <maximumFileSize value="1KB" />
          <preserveLogFileNameExtension value="true" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{ISO8601} [%thread] [%logger] [%level] [%method:%line]: %message%newline%exception" />
          </layout>
        </appender>
        <root>
          <level value="DEBUG"/>
          <appender-ref ref="DebugLogFileAppender" />
          <appender-ref ref="ProdLogFileAppender" />
          <appender-ref ref="ErrorLogFileAppender" />
        </root>
        <logger name="Photon" additivity="false">
          <level value="DEBUG" />
          <appender-ref ref="PhotonLogger" />
        </logger>
        <logger name="Photon.SocketServer" additivity="false">
          <level value="DEBUG"/>
          <appender-ref ref="PhotonLogger" />
        </logger>
      </log4net>
    </configuration>
  • Deprecated - may be closed :smile: