| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 | using MediaBrowser.Common.Configuration;using MediaBrowser.Model.Logging;using System;using System.IO;using MediaBrowser.Model.IO;namespace Emby.Server.Implementations.Logging{    public class UnhandledExceptionWriter    {        private readonly IApplicationPaths _appPaths;        private readonly ILogger _logger;        private readonly ILogManager _logManager;        private readonly IFileSystem _fileSystem;        private readonly IConsoleLogger _console;        public UnhandledExceptionWriter(IApplicationPaths appPaths, ILogger logger, ILogManager logManager, IFileSystem fileSystem, IConsoleLogger console)        {            _appPaths = appPaths;            _logger = logger;            _logManager = logManager;            _fileSystem = fileSystem;            _console = console;        }        public void Log(Exception ex)        {            _logger.ErrorException("UnhandledException", ex);            _logManager.Flush();            var path = Path.Combine(_appPaths.LogDirectoryPath, "unhandled_" + Guid.NewGuid() + ".txt");            _fileSystem.CreateDirectory(_fileSystem.GetDirectoryName(path));            var builder = LogHelper.GetLogMessage(ex);            // Write to console just in case file logging fails            _console.WriteLine("UnhandledException");            var logMessage = builder.ToString();            _console.WriteLine(logMessage);            _fileSystem.WriteAllText(path, logMessage);        }    }}
 |