mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 19:57:57 +01:00
* Upgraded projects to target .NET 8 * Updated .NET runtime package targets to use latest .NET 8 build * Updated PowerToys Interop to target .NET 8 * Switch to use ArgumentNullException.ThrowIfNull * ArgumentNullException.ThrowIfNull for CropAndLockViewModel * Switching to ObjectDisposedException.ThrowIf * Upgrade System.ComponentModel.Composition to 8.0 * ArgumentNullException.ThrowIfNull in Helper * Switch to StartsWith using StringComparison.Ordinal * Disabled CA1859, CA1716, SYSLIB1096 analyzers * Update RIDs to reflect breaking changes in .NET 8 * Updated Microsoft NuGet packages to RC1 * Updated Analyzer package to latest .NET 8 preview package * CA1854: Use TryGetValue instead of ContainsKey * [Build] Update TFM to .NET 8 for publish profiles * [Analyzers] Remove CA1309, CA1860-CA1865, CA1869, CA2208 from warning. * [Analyzers] Fix for C26495 * [Analyzers] Disable CS1615, CS9191 * [CI] Target .NET 8 in YAML * [CI] Add .NET preview version flag temporarily. * [FileLocksmith] Update TFM to .NET 8 * [CI] Switch to preview agent * [CI] Update NOTICE.md * [CI] Update Release to target .NET 8 and use Preview agent * [Analyzers] Disable CA1854 * Fix typo * Updated Microsoft.CodeAnalysis.NetAnalyzers to latest preview Updated packages to rc2 * [Analyzers][CPP] Turn off warning for 5271 * [Analyzers][CPP] Turn off warning for 26493 * [KeyboardListener] Add mutex include to resolve error * [PT Run][Folder] Use static SearchValues to resolve CA1870 * [PowerLauncher] Fix TryGetValue * [MouseJumpSettings] Use ArgumentNullException.ThrowIfNull * [Build] Disable parallel dotnet tool restore * [Build] No cache of dotnet tool packages * [Build] Temporarily move .NET 8 SDK task before XAML formatting * [Build][Temp] Try using .NET 7 prior to XAML formatting and then switch to .NET 8 after * [Build] Use .NET 6 for XAML Styler * [CI] Updated NOTICE.md * [FancyZones] Update TFM to .NET 8 * [EnvVar] Update TFM to .NET 8 and update RID * [EnvVar] Use ArgumentNullException.ThrowIfNull * [Dev] Updated packages to .NET 8 RTM version * [Dev] Updated Microsoft.CodeAnalysis.NetAnalyzers to latest * [CI] Updated NOTICE.md with latest package versions * Fix new utility target fameworks and runtimeids * Don't use preview images anymore * [CI] Add script to update VCToolsVersion environment variable * [CI] Add Step to Verify VCToolsVersion * [CI] Use latest flag for vswhere to set proper VCToolsVersion * Add VCToolsVersion checking to release.yml * Remove net publishing from local/ PR CI builds * Revert "Remove net publishing from local/ PR CI builds" This reverts commitf469778996. * Only publish necessary projects * Add verbosity to release pipelines builds of PowerTOys * Set VCToolsVersion for publish.cmd when called from installer * [Installer] Moved project publish logic to MSBuild Task * [CI] Revert using publish.cmd * [CI] Set VCToolsVersion and unset ClearDevCommandPromptEnvVars property * Installer publishes for x64 too * Revert "Add verbosity to release pipelines builds of PowerTOys" This reverts commit654d4a7f78. * [Dev] Update CodeAnalysis library to non-preview package * Remove unneeded warning removal * Fix Notice.md * Rename VCToolsVersion file and task name * Remove unneeded mutex header include --------- Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
136 lines
6.0 KiB
C#
136 lines
6.0 KiB
C#
// Copyright (c) Microsoft Corporation
|
|
// The Microsoft Corporation licenses this file to you under the MIT license.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System;
|
|
using System.Globalization;
|
|
using System.IO.Abstractions;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Text;
|
|
using NLog;
|
|
using NLog.Config;
|
|
using NLog.Targets;
|
|
|
|
namespace Wox.Plugin.Logger
|
|
{
|
|
public static class Log
|
|
{
|
|
private static readonly IFileSystem FileSystem = new FileSystem();
|
|
private static readonly IPath Path = FileSystem.Path;
|
|
private static readonly IDirectory Directory = FileSystem.Directory;
|
|
|
|
public const string DirectoryName = "Logs";
|
|
|
|
public static string CurrentLogDirectory { get; }
|
|
|
|
static Log()
|
|
{
|
|
CurrentLogDirectory = Path.Combine(Constant.DataDirectory, DirectoryName, Constant.Version);
|
|
if (!Directory.Exists(CurrentLogDirectory))
|
|
{
|
|
Directory.CreateDirectory(CurrentLogDirectory);
|
|
}
|
|
|
|
var configuration = new LoggingConfiguration();
|
|
var target = new FileTarget();
|
|
target.Layout = NLog.Layouts.Layout.FromString("[${longdate}] [${level:uppercase=true}]${message}\n");
|
|
configuration.AddTarget("file", target);
|
|
|
|
// Adding CurrentCulture since this is user facing
|
|
target.FileName = CurrentLogDirectory.Replace(@"\", "/", StringComparison.CurrentCulture) + "/${shortdate}.txt";
|
|
#if DEBUG
|
|
var rule = new LoggingRule("*", LogLevel.Debug, target);
|
|
#else
|
|
var rule = new LoggingRule("*", LogLevel.Info, target);
|
|
#endif
|
|
configuration.LoggingRules.Add(rule);
|
|
target.Dispose();
|
|
LogManager.Configuration = configuration;
|
|
}
|
|
|
|
private static void LogInternalException(string message, System.Exception e, Type fullClassName, [CallerMemberName] string methodName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
|
|
{
|
|
var logger = GetLogger(fullClassName.FullName, methodName);
|
|
var formattedOutput = new StringBuilder();
|
|
|
|
formattedOutput.AppendLine("-------------------------- Begin exception --------------------------");
|
|
formattedOutput.AppendLine(CultureInfo.InvariantCulture, $"Message: {message}");
|
|
|
|
do
|
|
{
|
|
formattedOutput.Append(
|
|
"\n" +
|
|
$"Exception full name : {e.GetType().FullName}\n" +
|
|
$"Exception message : {e.Message}\n" +
|
|
$"Exception stack trace:\n{e.StackTrace}\n" +
|
|
$"Exception source : {e.Source}\n" +
|
|
$"Exception target site: {e.TargetSite}\n" +
|
|
$"Exception HResult : {e.HResult}\n");
|
|
|
|
e = e.InnerException;
|
|
}
|
|
while (e != null);
|
|
|
|
formattedOutput.AppendLine("-------------------------- End exception --------------------------");
|
|
LogInternal(LogLevel.Error, formattedOutput.ToString(), logger, sourceFilePath, sourceLineNumber);
|
|
}
|
|
|
|
public static void Info(string message, Type fullClassName, [CallerMemberName] string methodName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(fullClassName);
|
|
|
|
LogInternal(LogLevel.Info, message, fullClassName, methodName, sourceFilePath, sourceLineNumber);
|
|
}
|
|
|
|
public static void Debug(string message, Type fullClassName, [CallerMemberName] string methodName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(fullClassName);
|
|
|
|
LogInternal(LogLevel.Debug, message, fullClassName, methodName, sourceFilePath, sourceLineNumber);
|
|
}
|
|
|
|
public static void Warn(string message, Type fullClassName, [CallerMemberName] string methodName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(fullClassName);
|
|
|
|
LogInternal(LogLevel.Warn, message, fullClassName, methodName, sourceFilePath, sourceLineNumber);
|
|
}
|
|
|
|
public static void Error(string message, Type fullClassName, [CallerMemberName] string methodName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(fullClassName);
|
|
|
|
LogInternal(LogLevel.Error, message, fullClassName, methodName, sourceFilePath, sourceLineNumber);
|
|
}
|
|
|
|
public static void Exception(string message, System.Exception ex, Type fullClassName, [CallerMemberName] string methodName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(fullClassName);
|
|
|
|
LogInternalException(message, ex, fullClassName, methodName, sourceFilePath, sourceLineNumber);
|
|
}
|
|
|
|
private static void LogInternal(LogLevel level, string message, Type fullClassName, [CallerMemberName] string methodName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
|
|
{
|
|
var logger = GetLogger(fullClassName.FullName, methodName);
|
|
|
|
LogInternal(level, message, logger, sourceFilePath, sourceLineNumber);
|
|
}
|
|
|
|
private static void LogInternal(LogLevel level, string message, NLog.Logger logger, [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
|
|
{
|
|
var msg = $" [{sourceFilePath}::{sourceLineNumber}]" +
|
|
$"\n{message}";
|
|
|
|
logger.Log(level, msg);
|
|
}
|
|
|
|
private static NLog.Logger GetLogger(string fullClassName, string methodName)
|
|
{
|
|
var classNameWithMethod = $"{fullClassName}.{methodName}";
|
|
|
|
return LogManager.GetLogger(classNameWithMethod);
|
|
}
|
|
}
|
|
}
|