mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-26 03:58:45 +08:00
# Conflicts: # CHANGELOG.TXT # CREDITS.TXT # README.MD # Tools/postbuild_installer.ps1 # Tools/set_LargeAddressAware.ps1 # mRemoteNGTests/mRemoteNGTests.csproj # mRemoteNGTests/packages.config # mRemoteV1/App/Logger.cs # mRemoteV1/App/Runtime.cs # mRemoteV1/App/Startup.cs # mRemoteV1/Connection/DefaultConnectionInfo.cs # mRemoteV1/Connection/Protocol/IntegratedProgram.cs # mRemoteV1/Connection/Protocol/PuttyBase.cs # mRemoteV1/Messages/MessageCollector.cs # mRemoteV1/Properties/AssemblyInfo.cs # mRemoteV1/Resources/Language/Language.Designer.cs # mRemoteV1/Resources/PuTTYNG.exe # mRemoteV1/Tools/ConnectionsTreeToMenuItemsConverter.cs # mRemoteV1/Tools/ExternalToolArgumentParser.cs # mRemoteV1/Tools/IeBrowserEmulation.cs # mRemoteV1/Tools/NotificationAreaIcon.cs # mRemoteV1/Tools/PortScanner.cs # mRemoteV1/UI/Controls/ConnectionTree/ConnectionTree.cs # mRemoteV1/UI/Controls/ConnectionTree/NameColumn.cs # mRemoteV1/UI/Forms/OptionsPages/ConnectionsPage.cs # mRemoteV1/UI/Forms/frmMain.cs # mRemoteV1/UI/Window/AboutWindow.cs # mRemoteV1/UI/Window/PortScanWindow.cs
67 lines
2.1 KiB
C#
67 lines
2.1 KiB
C#
using System;
|
|
using System.IO;
|
|
using System.Windows.Forms;
|
|
using log4net;
|
|
using log4net.Appender;
|
|
using log4net.Config;
|
|
// ReSharper disable ArrangeAccessorOwnerBody
|
|
|
|
namespace mRemoteNG.App
|
|
{
|
|
public class Logger
|
|
{
|
|
public static readonly Logger Instance = new Logger();
|
|
|
|
public ILog Log { get; private set; }
|
|
|
|
public static string DefaultLogPath => BuildLogFilePath();
|
|
|
|
private Logger()
|
|
{
|
|
Initialize();
|
|
}
|
|
|
|
private void Initialize()
|
|
{
|
|
XmlConfigurator.Configure();
|
|
if (string.IsNullOrEmpty(Settings.Default.LogFilePath))
|
|
Settings.Default.LogFilePath = BuildLogFilePath();
|
|
|
|
SetLogPath(Settings.Default.LogToApplicationDirectory ? DefaultLogPath : Settings.Default.LogFilePath);
|
|
}
|
|
|
|
public void SetLogPath(string path)
|
|
{
|
|
var repository = LogManager.GetRepository();
|
|
var appenders = repository.GetAppenders();
|
|
|
|
foreach (var appender in appenders)
|
|
{
|
|
var fileAppender = (RollingFileAppender)appender;
|
|
if (fileAppender == null || fileAppender.Name != "LogFileAppender") continue;
|
|
fileAppender.File = path;
|
|
fileAppender.ActivateOptions();
|
|
}
|
|
Log = LogManager.GetLogger("Logger");
|
|
}
|
|
|
|
private static string BuildLogFilePath()
|
|
{
|
|
var logFilePath = Runtime.IsPortableEdition ? GetLogPathPortableEdition() : GetLogPathNormalEdition();
|
|
var logFileName = Path.ChangeExtension(Application.ProductName, ".log");
|
|
if (logFileName == null) return "mRemoteNG.log";
|
|
var logFile = Path.Combine(logFilePath, logFileName);
|
|
return logFile;
|
|
}
|
|
|
|
private static string GetLogPathNormalEdition()
|
|
{
|
|
return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), Application.ProductName);
|
|
}
|
|
|
|
private static string GetLogPathPortableEdition()
|
|
{
|
|
return Application.StartupPath;
|
|
}
|
|
}
|
|
} |