I have the following in my nlog.config file
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="basedir" value="c:\Users\user\source\repos\projectname\projectname"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
-->
<!--write events to a file with the date in the filename.-->
<target xsi:type="file" name="f" filename="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
<rules>
<!-- add your logging rules here -->
<!--Write all events with minimal level of Debug (So Debug, Info, Warn, Error and Fatal, but not Trace) to "f"-->
<logger name="*" minlevel="Debug" writeTo="f" />
</rules>
</nlog>
and it is working and loging the errors as expected.
However, my concern is that when the application gets hosted online, How can I make the logs folder to be at my application root directory since I might not have the physical path to the application root spelt out the way it is on my local machine.
I have tried replacing the following line as follws:
<variable name="basedir" value="c:\Users\user\source\repos\projectname\projectname"/>
replaced with
<variable name="basedir" value="~/" />
It did not work.
I have also tried replacing the following line as follows
<target xsi:type="file" name="f" filename="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
replaced with
<target xsi:type="file" name="f" filename="${Server.MapPath(~)}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
But it is not working.
Please help to guide me on how to get the logs folder to be at the application root regardless of the hosting location of the application.
Thank you