Sie könnte möglicherweise auch eine benutzerdefinierte TraceWriter verwenden.
Beispiel: https://gist.github.com/aaronhoffman/3e319cf519eb8bf76c8f3e4fa6f1b4ae
JobHost
Config
static void Main()
{
var config = new JobHostConfiguration();
// Log Console.Out to SQL using custom TraceWriter
// Note: Need to update default Microsoft.Azure.WebJobs package for config.Tracing.Tracers to be exposed/available
config.Tracing.Tracers.Add(new SqlTraceWriter(
TraceLevel.Info,
"{{SqlConnectionString}}",
"{{LogTableName}}"));
var host = new JobHost(config);
host.RunAndBlock();
}
Probe SqlTraceWriter Implementierung
public class SqlTraceWriter : TraceWriter
{
private string SqlConnectionString { get; set; }
private string LogTableName { get; set; }
public SqlTraceWriter(TraceLevel level, string sqlConnectionString, string logTableName)
: base(level)
{
this.SqlConnectionString = sqlConnectionString;
this.LogTableName = logTableName;
}
public override void Trace(TraceEvent traceEvent)
{
using (var sqlConnection = this.CreateConnection())
{
sqlConnection.Open();
using (var cmd = new SqlCommand(string.Format("insert into {0} ([Source], [Timestamp], [Level], [Message], [Exception], [Properties]) values (@Source, @Timestamp, @Level, @Message, @Exception, @Properties)", this.LogTableName), sqlConnection))
{
cmd.Parameters.AddWithValue("Source", traceEvent.Source ?? "");
cmd.Parameters.AddWithValue("Timestamp", traceEvent.Timestamp);
cmd.Parameters.AddWithValue("Level", traceEvent.Level.ToString());
cmd.Parameters.AddWithValue("Message", traceEvent.Message ?? "");
cmd.Parameters.AddWithValue("Exception", traceEvent.Exception?.ToString() ?? "");
cmd.Parameters.AddWithValue("Properties", string.Join("; ", traceEvent.Properties.Select(x => x.Key + ", " + x.Value?.ToString()).ToList()) ?? "");
cmd.ExecuteNonQuery();
}
}
}
private SqlConnection CreateConnection()
{
return new SqlConnection(this.SqlConnectionString);
}
}
wurde damit Ihre Frage beantwortet? –
Ist es möglich, NLog Datei Ziel mit WebJobs zu verwenden? Ich habe einen ununterbrochenen Job, der nachts läuft und manchmal Fehler haben kann, die ich erst am nächsten Tag sehen werde. Ich möchte kontinuierlich mit einem rollenden Archiv loggen - alles, was NLog kann. Gibt es einen Pfad im Dateisystem, auf den der WJ Schreibzugriff hat? – kamranicus
Ja, es wird sein, was auch immer die Website hat, was alles unter d: \ home (% home%) ist, gehe zu https: // {sitename} .scm.azurewebsites.net/debugconsole, um deine Dateien und dort zu sehen kann verstehen, wo Sie am besten Ihre Dateien/Log-Dateien setzen –