2016-11-14 62 views
0

我使用的是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但獲得相同的錯誤。我已經賦予「每個人」對根目錄的完整權利。我也嘗試過配置文件來開始,但這也沒有幫助。我已經對我的頭撞了一陣 - 任何人都有什麼建議?

+0

嘗試直接對路徑和文件名進行硬編碼。可能是文件名的問題 – GreatJobBob

+0

它基本上是硬編碼 - 但是,而不是使用Guid.New - 我只是試着用「file-log.log」並得到相同的錯誤。我也嘗試使用Path.GetTempPath(),我得到了同樣的錯誤。 – jeromeyers

+0

哪個平臺和NLog版本?據我記憶,在xamarin之前看過這個錯誤。 – Julian

回答

1

NLog 4.4.1現在執行MONO版本的運行時檢測,並且避免在未運行MONO版本的情況下使用已命名的互斥鎖。 4或更新版本(Unity正在運行MONO版本。2)