2017-08-28 27 views
-1

我使用的是目標文件寫入到一個日誌文件,像這樣:n日誌文件目標:從文件共享應用程序啓動,寫入C: TEMP - 不輸出

fileName="/Temp/Logs/AppDir/App.log" 

當應用程序上本地驅動器工作正常並寫入此位置。如果我將應用程序移動到文件共享,那麼我不會在此位置獲得日誌文件,也不會出現錯誤。

我認爲這是權限。在這種情況下,您是否可以不寫入本地驅動器?我可以把它寫在其他地方嗎?還是在NLog配置中有一些設置或我需要看的東西?

科從Program.cs中的代碼:請注意,我沒有看到消息框在漁獲物和應用程序正常運行:

static void Main() 
{ 
    try 
    { 
     Logger.Info("Application Start"); 
     Application.EnableVisualStyles(); 
     Application.SetCompatibleTextRenderingDefault(false); 

     var settings = new Settings(); 

     if (settings.AccessDenied) 
      Application.Run(new FormAccessDenied()); 
     else 
      Application.Run(new FormMain(settings)); 
    } 
    catch (CommunicationException ce) 
    { 
     Logger.Error($"{ce.Message}{Environment.NewLine}{ce.StackTrace}"); 
     MessageBox.Show($"{ce.Message}{Environment.NewLine}The application can not proceed"); 
    } 
    catch (Exception up) 
    { 
     Logger.Error($"{up.Message}{Environment.NewLine}{up.StackTrace}"); 
     MessageBox.Show($"An error has occurred in the application. Please consult the log file for more information"); 
    } 
} 

謝謝!

+1

添加一些記錄到你的代碼,看看你得到一個'訪問Denied'錯誤..這聽起來像一個權限問題。如果我們可以看到你的代碼正在做什麼 – MethodMan

+0

在一分鐘內它會記錄它啓動。它甚至不創建文件。我不知道我會添加什麼日誌代碼,因爲這是日誌記錄代碼。 – EricR

+0

你熟悉'try {} catch()'並使用處理System.IO錯誤的異常..只是發佈你的代碼,我們可以幫助你,否則你會基於猜測/猜測期待很多答案。 – MethodMan

回答

0

這可能是一個權限錯誤。你可以檢查由:

或:啓用內部記錄,在你的配置,在這種情況下,警告是不夠

<nlog internalLogFile="c:\log.txt" internalLogLevel="Warn"> 

,或者使異常拋出。

<nlog throwExceptions="true" /> 

它建議在生產轉的throwExceptions(默認)

+0

這不是確切的答案,但它導致我在那裏。而不是像我在內部的LogFile中那樣需要絕對的相對路徑。我更新了目標fileName和archiveFileName以使用c:\​​ temp \ ...,現在我正在獲取一個日誌文件。 – EricR