<target name="MyTarget" xsi:type="File" createDirs="true" fileName="C:\Test\Logs\log.txt" archiveEvery="Day" archiveNumbering="Rolling" layout="${message}" />
private static void SetLoggerFileName(string serviceName) {
NLog.Targets.FileTarget target = LogManager.Configuration.FindTargetByName("MyTarget") as NLog.Targets.FileTarget;
string path = target.FileName.ToString();
path = path.Substring(0, path.LastIndexOf(System.IO.Path.DirectorySeparatorChar));
target.FileName = System.IO.Path.Combine(path, string.Format("{0}.txt", serviceName));
}
<target name="MyTarget" xsi:type="File" createDirs="true" fileName="C:\Test\Logs\${event-context:item=serviceName}.txt" archiveEvery="Day" archiveNumbering="Rolling" layout="${message}" />
LogEventInfo lei = new LogEventInfo(LogLevel.Debug, logger.Name, "some message");
lei.Properties["serviceName"] = serviceName;
logger.Log(lei);
var config = new LoggingConfiguration();
var fileTarget = new FileTarget
{
Header = Layout.FromString(header),
CreateDirs = true,
Layout = Layout.FromString("${date:format=yyyy-MM-dd HH\\:mm\\:ss.fffffff} ${level} ${message}"),
FileName = String.Format("{0}\\{1}", logPath, logFileName),
Encoding = Encoding.GetEncoding(1251),
ArchiveFileName = String.Format("{0}\\{1}.{2}.log", logPath, logFileName, "{#####}"),
ArchiveNumbering = ArchiveNumberingMode.Sequence,
ArchiveEvery = FileArchivePeriod.None,
ArchiveAboveSize = 10 * 1024 * 1024,
AutoFlush = true,
ConcurrentWrites = false,
BufferSize = 10240
};
var asyncFileTarget = new AsyncTargetWrapper(fileTarget);
config.AddTarget("file", asyncFileTarget);
var fileLoggingRule = new LoggingRule("*", LogLevel.Info, asyncFileTarget);
config.LoggingRules.Add(fileLoggingRule);
LogManager.ThrowExceptions = true;
LogManager.Configuration = config;
var logger = LogManager.GetLogger(typeof(T).FullName);
var resultMessage = string.Format(message, messageParams);
var logEvent = new LogEventInfo(level, typeof(T).FullName, resultMessage);
logger.Log(typeof(LoggingManager), logEvent);