我使用的是NLOG编程配置和我遇到下面的错误,每当日志文件应该被写入:NLOG例外文件(团结项目)
ArgumentOutOfRangeException:参数超出范围。 System.Security.AccessControl.AuthorizationRule..ctor (System.Security.Principal.IdentityReference身份,的Int32 accessMask,布尔isInherited,InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)(在 /用户/ builduser/buildslave /单声道/建造/ System.Security.AccessControl.AccessRule..ctor (System.Security.Principal.IdentityReference identity,Int32 accessMask,Boolean isInherited,InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags,AccessControlType类型) System.Security.AccessControl.MutexAccessRule..ctor (System.Security.Principal.I dentityReference同一性,MutexRights eventRights,AccessControlType型) NLog.Internal.FileAppenders.BaseFileAppender.CreateSharableMutex (System.String mutexNamePrefix) NLog.Internal.FileAppenders.BaseFileAppender.CreateSharableArchiveMutex () NLog.Internal.FileAppenders.RetryingMultiProcessFileAppender.CreateArchiveMutex ()NLog.Internal.FileAppenders.BaseFileAppender..ctor(System.String 文件名,ICreateFileParameters createParameters) NLog.Internal.FileAppenders.RetryingMultiProcessFileAppender..ctor (System.String文件名,ICreateFileParameters参数) NLog.Internal.FileAppenders .RetryingMultiProcessFileAppender + Factory.NLog.I nternal.FileAppenders.IFileAppenderFactory.Open (System.String文件名,ICreateFileParameters参数) NLog.Internal.FileAppenders.FileAppenderCache.AllocateAppender (System.String文件名)NLog.Targets.FileTarget.WriteToFile (System.String文件名,NLOG。 LogEventInfo logEvent,System.Byte [] bytes,Boolean justData)NLog.Targets.FileTarget.ProcessLogEvent (NLog.LogEventInfo logEvent,System.String fileName,System.Byte [] bytesToWrite)NLog.Targets.FileTarget.Write(NLog .LogEventInfo LOGEVENT)NLog.Targets.Target.Write(AsyncLogEventInfo LOGEVENT)
goog据我所知,le对这个错误一无所知。以下是我的配置代码:
public static void SetupLogging()
{
// Can unity debug be redirected to go through Nlog?
var config = new LoggingConfiguration();
var consoleTarget = new ConsoleTarget("console");
config.AddTarget("console", consoleTarget);
//var logsPath = UtilsIO.GetResourcesPath(UtilsIO.ResourceType.Logs, "_logs");
var logsPath = @"d:\jem\temp\_logs";
var dir = logsPath + "\\app" + "\\" + Environment.UserName;
if (!Directory.Exists(dir))
{
Directory.CreateDirectory(dir);
}
var filepath = Path.Combine(dir, Guid.NewGuid() + ".log");
var fileTarget = new FileTarget("file")
{
FileName = filepath,
Layout = "${date:format=yyyyMMddHHmmss} ${message}"
};
config.AddTarget("file", fileTarget);
var rule1 = new LoggingRule("*", LogLevel.Debug, consoleTarget);
config.LoggingRules.Add(rule1);
var rule2 = new LoggingRule("*", LogLevel.Debug, fileTarget);
config.LoggingRules.Add(rule2);
InternalLogger.LogToConsole = true;
LogManager.ThrowExceptions = true;
LogManager.Configuration = config;
}
这是我的实例记录器:
private static NLog.Logger logger = LogManager.GetLogger("file");
这就是我如何使用实例:
logger.Debug("Hello world????");
我已经尝试使用ImpersonatingTargetWrapper但获得相同的错误。我已经赋予“每个人”对根目录的完整权利。我也尝试过配置文件来开始,但这也没有帮助。我已经对我的头撞了一阵 - 任何人都有什么建议?
尝试直接对路径和文件名进行硬编码。可能是文件名的问题 – GreatJobBob
它基本上是硬编码 - 但是,而不是使用Guid.New - 我只是试着用“file-log.log”并得到相同的错误。我也尝试使用Path.GetTempPath(),我得到了同样的错误。 – jeromeyers
哪个平台和NLog版本?据我记忆,在xamarin之前看过这个错误。 – Julian