2010-01-04 35 views
43

mục tiêu của tôi NLog là như thế này:sử dụng AppData vị trí trong NLog

<targets> 
    <target xsi:type="Console" name="console" 
    layout="${longdate}|${level}|${message}" /> 
    <target xsi:type="File" name="ErrorLog" fileName="${basedir}/error.txt" 
      layout="${longdate} 
      Trace: ${stacktrace} 
      ${message}" /> 
    <target xsi:type="File" name="AccessLog" fileName="${basedir}/access.txt" 
      layout="${shortdate} | ${message}" /> 
</targets> 

Nhưng điều này gây ra vấn đề nếu người dùng không phải là một quản trị viên trên máy tính của họ, bởi vì họ sẽ không có quyền ghi vào "Program Files" . Làm thế nào tôi có thể nhận được một cái gì đó như %AppData% để NLog thay vì BaseDir?

Trả lời

69

Bạn đang tìm kiếm NLog special folders.

Ví dụ:

...fileName="${specialfolder:folder=ApplicationData}/Program/file.txt"... 
+0

Vâng, nhưng làm cách nào để sử dụng? Tôi đã thử, fileName = "$ {ApplicationData} /RentalEase/access.txt" và nó không âm thầm. – Malfist

+0

Tôi không nhớ ra khỏi đỉnh đầu của tôi, nhưng nó sẽ giống như thế này: $ {specialfolder: folder = SPECIALFOLDERNAME} –

+0

Điều đó không có tác dụng, nói rằng nó không hợp lệ. – Malfist

4

$ {specialfolder: ApplicationData} cũng làm việc

10

câu trả lời Oren nên được câu trả lời đúng. Tuy nhiên, đối với cuộc sống của tôi tôi không thể làm cho nó hoạt động với trang web .NET 4.0 của tôi bằng cách sử dụng nLog 2.0.0.0. Tôi đã sử dụng chỉ đơn giản là

fileName="${basedir}app_data\logs\${shortdate}.log" 
+0

Tiêu đề câu hỏi sử dụng "AppData" nhưng tôi không nghĩ rằng {..ApplicationData} được ánh xạ tới App_Data, tôi phải đọc nguồn để kiểm tra kỹ. –

+1

Câu hỏi này và câu trả lời được chấp nhận là về thư mục đặc biệt của Windows% appdata%, thường là C: \ Users \ \ AppData \ Roaming. Có vẻ như không có biến đặc biệt nào cho thư mục ASP.net App_Data. – angularsen

0

Các câu trả lời trước đây đã giúp giải quyết vấn đề tôi gặp phải, nhưng một vài năm sau và giải pháp bây giờ hơi khác với v4.3. Thư mục và tên tệp được kết hợp với đường dẫn.

@ liên kết theGecko là vẫn hiện hành đối với các cú pháp, nhưng trang là thiếu của một ví dụ:

https://github.com/nlog/NLog/wiki/Special-Folder-Layout-Renderer

Ví dụ sau sẽ viết các tập tin myLog.log để các dữ liệu người dùng hiện tại ứng dụng roaming thư mục C:\USers\current.user\AppData\Roaming\My\Path\Somewhere:

fileName="${specialfolder:dir=My/Path/Somewhere/:file=myFile.log:folder=ApplicationData}" 
Các vấn đề liên quan