반응형
전체 웹 작업 로그를 활성화하는 방법 Azure
Windows Azure에서 콘솔 응용 프로그램을 WebJob으로 실행하면 로그 몇 줄 후에 다음 경고가 추가됩니다.
[05/06/2014 09:42:40 > 21026c: WARN] Reached maximum allowed output lines for this run, to see all of the job's logs you can enable website application diagnostics
기록을 중지합니다.기본 호스팅 계획으로 웹 사이트의 모든 설정을 검토하고 있었지만 이 문제를 해결할 수 있는 어떤 것도 찾을 수 없었습니다.
전체 webJob 로그를 활성화하려면 어떻게 해야 합니까?
전체(연속) WebJobs 로그를 활성화하는 방법은 실제로 다음 오류 메시지에 있습니다.enable website application diagnostics
웹 사이트의 구성 탭에 있는 Azure 포털을 통해 이 작업을 수행할 수 있으며, 응용 프로그램 로그를 파일 시스템, 테이블 저장소 또는 BLOB 저장소로 이동하도록 설정할 수 있습니다.
활성화되면 웹 작업에 대한 전체 로그가 선택한 저장소에 저장됩니다.
Azure 웹 사이트용 응용 프로그램 진단에 대한 자세한 정보: http://azure.microsoft.com/en-us/documentation/articles/web-sites-enable-diagnostic-log/
사용자 정의 TraceWriter를 사용할 수도 있습니다.
예: https://gist.github.com/aaronhoffman/3e319cf519eb8bf76c8f3e4fa6f1b4ae
JobHost
설정
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();
}
SqlTraceWriter 구현 예제
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);
}
}
언급URL : https://stackoverflow.com/questions/23491907/azure-how-to-enable-full-webjob-logs
반응형
'source' 카테고리의 다른 글
빌드 후 이벤트의 파일을 포함하기 위해 Visual Studio 'Publish' 기능을 사용하는 방법은 무엇입니까? (0) | 2023.04.27 |
---|---|
셸 스크립트의 연관 배열 (0) | 2023.04.27 |
Windows에서 현재 localhost의 포트를 사용하고 있는 프로세스를 중지하려면 어떻게 해야 합니까? (0) | 2023.04.27 |
엑셀에서 값을 범위로 제한하려면 어떻게 해야 합니까? (0) | 2023.04.27 |
SQL Server에서 varchar(MAX) 대 TEXT 사용 (0) | 2023.04.27 |