Photon bukan hanya tentang log4net

... tetapi juga penebang lainnya.





Secara tradisional, Photon Server SDK dikirimkan dengan log4net. Tetapi ini tidak berarti bahwa setiap orang harus menggunakannya. Hampir semua logger dapat digunakan. Yang perlu Anda lakukan adalah membuat rakitan adaptor Anda sendiri, yang akan berisi kelas proxy dan pabrik untuk itu.





Mari kita lihat Serilog, yang menjadi mode saat ini. Saya kurang kenal dengan dia, jadi ada kemungkinan sesuatu tidak akan dilakukan dengan cara terbaik atau salah.





Jadi mari kita mulai.





Hal pertama yang perlu kita lakukan adalah membuat perakitan untuk adaptor Anda.





Di SDK 4.0, antarmuka ExitGames.Logging.ILogger dan ExitGames.Logging.ILoggerFactory berada di ExitGamesLibs.dll. Di SDK 5.0 mereka dipindahkan ke ExitGames.Logging.dll. ExitGames.Logging ada dalam paket nuget dengan nama yang sama. Pustaka ini perlu ditambahkan sebagai dependensi.





Selanjutnya, kami membuat kelas proxy untuk logger. Saya tidak akan memberikan semua kodenya, agar tidak menggembungkan contoh.





    class SerilogLogger : ILogger
    {
        private readonly global::Serilog.ILogger logger;

        public bool IsDebugEnabled => this.logger.IsEnabled(LogEventLevel.Debug);

        // not sure whether this is right implementation
        public string Name => this.logger.ToString();

............................................................

        public SerilogLogger(global::Serilog.ILogger logger)
        {
            this.logger = logger;
        }

        public void Debug(object message)
        {
            if (message is string str)
            {
                this.logger.Debug(str);
                return;
            }

            throw new NotSupportedException("only strings are allowed");
        }

        public void Debug(object message, Exception exception)
        {
            if (message is string str)
            {
                this.logger.Debug(exception, str);
                return;
            }
            throw new NotSupportedException("only strings are allowed");
        }

        public void DebugFormat(string format, params object[] args)
        {
            this.logger.Debug(format, args);
        }

        public void DebugFormat(IFormatProvider formatProvider, string format, params object[] args)
        {
            this.logger.Debug(format, args);
        }
......................................................        

      
      



Hal berikutnya yang kami butuhkan adalah kelas pabrik.





    public class SerilogLoggerFactory : ILoggerFactory
    {
        /// <summary>
        /// Provides a static singleton instance for the <see cref="SerilogLoggerFactory"/> class.
        /// </summary>
        public static readonly SerilogLoggerFactory Instance = new SerilogLoggerFactory();

        public ILogger CreateLogger(string name)
        {
            var serilogLogger = Log.ForContext(Constants.SourceContextPropertyName, name);
            return new SerilogLogger(serilogLogger);
        }
    }

      
      



Sentuhan terakhir adalah pemasangan pabrik kami





ExitGames.Logging.LogManager.SetLoggerFactory(SerilogLoggerFactory.Instance);

      
      



Ini harus dilakukan sebelum logger di Photon.SocketServer.dll diinisialisasi. Konstruktor statis aplikasi foton Anda adalah yang terbaik untuk ini.





Apa lagi yang perlu Anda ketahui tentang logging

Gunakan jika (log.IsDebugEnabled)

, , , . , if-, . Info . Warning .





, - . . LogCountGuard. , . , . . . , ,





Untuk membuat alat ini nyaman digunakan, metode ekstensi telah ditambahkan. Sekarang semuanya terlihat seperti ini. Katakanlah kita membutuhkan pesan untuk tidak muncul lebih dari 10 kali dalam satu menit. Anda perlu melakukan hal berikut,





  // 
  private static readonly LogCountGuard msgLogGuard = new LogCountGuard(new TimeSpan(0, 0, 6), 1);
  

  // 
  log.Warn(msgLogGuard, "message");

      
      



Kesimpulan

Sebagai kesimpulan, saya ingin semua orang sukses dalam menggunakan Photon Server SDK dan jangan biarkan ketiadaan logger favorit Anda membuat Anda takut.








All Articles