Ask Learn
Preview
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign inThis browser is no longer supported.
Upgrade to Microsoft Edge to take advantage of the latest features, security updates, and technical support.
Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
Here are steps to write NLog to Database in Azure Functions
1. via Config (NLog.config)
<?xml version="1.0" encoding="utf-8" ?> <nlog xmlns="https://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"> <targets> <!--<target name="logfile" xsi:type="File" fileName="file.txt" />--> <target name="logfile" xsi:type="Database" connectionstring="Server=dbservername.database.windows.net,1433;Initial Catalog=dbname;Persist Security Info=False;User ID=dbuser;Password=password; MultipleActiveResultSets=False; Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"> <commandText> insert into LogTable(time_stamp,level,logger,message) values(@time_stamp, @level, @logger, @message); </commandText> <parameter name="@time_stamp" layout="${date}" /> <parameter name="@level" layout="${level}" /> <parameter name="@logger" layout="${logger}" /> <parameter name="@message" layout="${message}" /> </target> </targets> <rules> <logger name="*" minlevel="Trace" writeTo="logfile" /> </rules> </nlog> |
2. via Code
static void Main(string[] args) {
LogManager.ThrowExceptions = true; LogManager.ThrowConfigExceptions = true; //InternalLogger.LogToConsole = true; InternalLogger.LogFile = "log.txt"; InternalLogger.LogLevel = LogLevel.Trace;
#if DEBUG1 //FILE_TARGET NLog.Targets.FileTarget target = new NLog.Targets.FileTarget("file_target"); target.FileName = "logfile.txt"; NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, LogLevel.Trace);
Logger logger = LogManager.GetLogger("file_target"); #elif DEBUG2 NLog.Targets.DatabaseTarget target = new NLog.Targets.DatabaseTarget("db_target"); NLog.Targets.DatabaseParameterInfo param;
//target.DBProvider = "System.Data.SqlClient"; target.DBHost = "dbservername.database.windows.net"; target.DBUserName = "dbuser"; target.DBPassword = "password"; target.DBDatabase = "dbname"; target.CommandText = "insert into LogTable(time_stamp,level,logger,message) values(@time_stamp, @level, @logger, @message);";
param = new NLog.Targets.DatabaseParameterInfo(); param.Name = "@time_stamp"; param.Layout = "${date}"; target.Parameters.Add(param);
param = new NLog.Targets.DatabaseParameterInfo(); param.Name = "@level"; param.Layout = "${level}"; target.Parameters.Add(param);
param = new NLog.Targets.DatabaseParameterInfo(); param.Name = "@logger"; param.Layout = "${logger}"; target.Parameters.Add(param);
param = new NLog.Targets.DatabaseParameterInfo(); param.Name = "@message"; param.Layout = "${message}"; target.Parameters.Add(param);
NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(target, LogLevel.Trace); Logger logger = LogManager.GetLogger("db_target");
#else Logger logger = LogManager.GetCurrentClassLogger(); #endif
logger.Trace("Sample trace message"); logger.Debug("Sample debug message"); logger.Info("Sample informational message"); logger.Warn("Sample warning message"); logger.Error("Sample error message"); logger.Fatal("Sample fatal error message");
LogManager.Flush(); } |
3. In Azure Functions, we need to set the location of NLog.config file using XmlLoggingConfiguration() class as shown below:
using System; using NLog; using NLog.Common; using NLog.Config;
private static Logger logger = null;
public static void Run(TimerInfo myTimer, TraceWriter log) {
log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
if (logger == null) { LogManager.ThrowExceptions = true; LogManager.ThrowConfigExceptions = true; //InternalLogger.LogToConsole = true; InternalLogger.LogFile = "log.txt"; InternalLogger.LogLevel = LogLevel.Trace; LogManager.Configuration = new XmlLoggingConfiguration("D:\\home\\site\\wwwroot\\<your function name>\\NLog.config");
logger = LogManager.GetCurrentClassLogger();
} |
4. Also note, we need to add NuGet package details in the Project.json as shown below
Ask Learn is an AI assistant that can answer questions, clarify concepts, and define terms using trusted Microsoft documentation.
Please sign in to use Ask Learn.
Sign in