Trong ứng dụng C# của chúng tôi, chúng tôi ghi tệp vào Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
. logfile log4net của chúng tôi nên đến đó quá, vì vậy chúng tôi đã xác định application.conf
như sau:Đầu ra của Log4net vào Tài liệu của tôi
<appender name="LogFile" type="log4net.Appender.RollingFileAppender">
<appendToFile value="true"/>
<file value="%USERPROFILE%\My Documents\MyApp\log.txt"/>
...snip...
</appender>
này hoạt động, cho đến khi chúng tôi chạy ở trên một máy tính trong đó có một không phải tiếng Anh của Windows. Bởi vì sau đó, SpecialFolder.MyDocuments
trỏ đến thư mục Mijn Documenten
, trong khi nhật ký vẫn chuyển đến My Documents
. Lẫn lộn xảy ra sau đó, bởi vì bây giờ các tập tin của chúng tôi ở hai nơi.
Tôi muốn ghi nhật ký của mình vào thư mục "Tài liệu của tôi" thực. Làm thế nào để tôi làm điều này?
- Tôi đã cố gắng tìm một biến môi trường như
%USERPROFILE%
, nhưng dường như không tồn tại một đối với Tài liệu của tôi. - Có khóa đăng ký xác định vị trí thực sự của Tài liệu của tôi nhưng không thể truy cập từ
application.conf
. Tôi cố gắng để ghi đè lên
File
tham số của appender tôi lập trình, như thế này:public static void ConfigureLogger() { XmlConfigurator.Configure(); Hierarchy hierarchy = (Hierarchy)log4net.LogManager.GetRepository(); foreach (var appender in hierarchy.Root.Appenders) { if (appender is FileAppender) { var fileAppender = appender as FileAppender; var logDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "MyApp"); var pathElements = fileAppender.File.Split(Path.DirectorySeparatorChar); var logFileName = pathElements.Last(); var fullLogFilePath = Path.Combine(logDirectory, logFileName); fileAppender.File = fullLogFilePath; } } }
này không làm việc một trong hai: khi tôi kiểm tra bên trong của logger của tôi,
File
sở hữu hạnh phúc báo cáoMijn Documenten
, nhưng trong khi đó các bản ghi vẫn được chuyển đếnMy Documents
.
Tôi sắp hết ý tưởng!