2014-05-06 4 views
16

सक्षम करने के लिए, लॉग की कुछ पंक्तियां के बाद यह एक चेतावनी जोड़ता है: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 

और बंद हो जाता है लॉगिंग। मैं बेसिक होस्टिंग योजना के साथ अपनी वेबसाइट में सभी सेटिंग्स के माध्यम से जा रहा था लेकिन मैं इस मुद्दे को ठीक करने में कुछ भी नहीं ढूंढ पाया।

मैं पूर्ण वेबजॉब लॉग कैसे सक्षम कर सकता हूं?

उत्तर

15

पूर्ण (निरंतर) वेबजब्स लॉग सक्षम करने का तरीका वास्तव में त्रुटि संदेश में है: enable website application diagnostics, आप इसे वेबसाइट के कॉन्फ़िगर टैब पर Azure पोर्टल के माध्यम से कर सकते हैं, आप फ़ाइल लॉग पर जाने के लिए एप्लिकेशन लॉग सेट कर सकते हैं- प्रणाली (लेकिन केवल 12 घंटे के लिए), टेबल स्टोरेज या ब्लॉब स्टोरेज।

एक बार सक्षम होने के बाद WebJobs के लिए पूर्ण लॉग चयनित संग्रहण पर जाएंगे। Azure वेबसाइटों के लिए आवेदन निदान पर

और जानकारी: http://azure.microsoft.com/en-us/documentation/articles/web-sites-enable-diagnostic-log/

+0

यह आपके सवाल का जवाब दिया? –

+0

क्या वेबजब्स के साथ एनएलओजी फ़ाइल लक्ष्य का उपयोग करना संभव है? मेरे पास एक सतत नौकरी है जो रात के दौरान चलती है और कभी-कभी त्रुटियां हो सकती हैं, मैं अगले दिन तक नहीं देखूंगा और मैं रोलिंग आर्काइव के साथ निरंतर लॉगिंग करना चाहता हूं - जिनमें से सभी एनएलओजी कर सकते हैं। क्या फाइल सिस्टम में कोई रास्ता है जिस पर डब्ल्यूजे के पास लेखन की पहुंच है? – kamranicus

+0

हां, यह भी होगा कि जिस वेबसाइट पर पहुंच है, वह डी: \ home (% home%) के तहत कुछ भी है, अपनी फाइलें देखने के लिए https: // {sitename} .scm.azurewebsites.net/debugconsole पर जाएं और वहां आप यह समझ सकता है कि आपकी फाइल/लॉग फाइलों को सबसे अच्छा कहां रखना है –

2

तुम भी संभवतः एक कस्टम TraceWriter इस्तेमाल कर सकते हैं।

उदाहरण: 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(); 
} 

नमूना 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); 
    } 
} 
संबंधित मुद्दे