Log4Net SmtpAppender für WebEmail - Nicht Senden
Ich versuche, Log4Net arbeiten mit web-E-Mail, entweder von Yahoo oder Gmail. Wenn Sie diese arbeiten, würde ich mich über etwas Hilfe, und danke im Voraus.
Habe ich einen Standard-root-logger, mit einem RollingFileAppender und ein SmtpAppender.
Die Datei-appender ist in Ordnung. Die SmtpAppender gibt mir nichts.
Ich bin dem Aufruf der logger von einem Diagnose-Schaltfläche, klicken Sie auf...
protected void btnReloadContractConfig_Click(object sender, EventArgs e)
{
//DIAGNOSTIC - Test email logger
log4net.ILog logger = log4net.LogManager.GetLogger("root");
logger.Error("btnReloadContractConfig_Click() - This is a TEST of delivery of error messages via email, triggered from the Admin.aspx.cs code file.");
}
...und die RollingFileAppender ist die Botschaft...
LOC=20120921-12:03:16.319,UTC=20120921-11:03:16.319,DELTA=10078,THR=6,FEHLER,LOG=Wurzel[(null)] - btnReloadContractConfig_Click() - Dies ist ein TEST für die Auslieferung von Fehlermeldungen via E-Mail, ausgelöst von der Admin.aspx.cs-code-Datei.
Web.config-Einträge für Log4Net sind hier::
<appSettings>
<add key="log4net.Internal.Debug" value="true"/>
<appSettings>
<log4net
xsi:noNamespaceSchemaLocation="http://csharptest.net/downloads/schema/log4net.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
<appender-ref ref="SmtpAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="MiniMkt01Log.txt"/>
<!-- <file value="${TMP}\log-file.txt" /> -->
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout" >
<header value="[Header] " />
<conversionPattern value="LOC=%date{yyyyMMdd-HH:mm:ss.fff},UTC=%utcdate{yyyyMMdd-HH:mm:ss.fff},DELTA=%timestamp,THR=%thread,%-5level,LOG=%logger,[%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="[email protected]" />
<from value="[email protected]" />
<subject value="Logging Message" />
<smtpHost value="smtp.yahoo.com" />
<port value="25"/>
<authentication value="Basic" />
<username value="[email protected]"/>
<password value="?????[real password hidden for obvious reasons]"/>
<!-- <EnableSsl value="true" /> -->
<bufferSize value="10" />
<lossy value="true" />
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="WARN"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] " />
<!-- Previously... <conversionPattern value="%newline%date,%utcdate,%timestamp,[%thread],%-5level,%logger,[%property{NDC}] - %message%newline%newline%newline" /> -->
<conversionPattern value="%newlineLOC=%date{yyyyMMdd-HH:mm:ss.fff},UTC=%utcdate{yyyyMMdd-HH:mm:ss.fff},DELTA=%timestamp,THR=%thread,%-5level,LOG=%logger,[%property{NDC}] - %message%newline%newline%newline" />
</layout>
</appender>
</log4net>
Web.config ist, wird abgeholt, in der Globalen.asax-Datei, in der Application_Start () - handler...
void Application_Start(object sender, EventArgs e)
{
//Start Log4Net, signal app has started
log4net.Config.XmlConfigurator.Configure();
log4net.ILog logger = log4net.LogManager.GetLogger("root");
logger.Info("Application_Start()");
}
Admin-web-Seite, löst die E-Mail-Versuch scheint entweder unbegrenzt lange hängen, oder hängen Sie kurzzeitig (halbe Sekunde) und dann weiter.
Der dev-Umgebung nicht zusammenbricht, mit einer Ausnahme, ist es entweder hängen oder gleiten auf, ohne Fehler.
- Wie erhalte ich zusätzliche Diagnostik aus der SmtpAppender?
- Kann ich unabhängig testen den port/config zu prüfen, eine lokale blockieren von ausgehenden programmatische E-Mail?
- Ist eine log4net E-Mail garantiert versendet werden? Die verlustreiche und bufferSize-Eigenschaften
scheinen sehr empfindlich, wenn ich verlustbehaftet=false, bekomme ich eine unbestimmte hängen...
Referenz ich bin mit VS 2010, ASP.Net4, und viel Koffein. Nochmals vielen Dank für jede kommende Hilfe.
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK, es herausgefunden und bin jetzt Empfang E-Mails. Ich konnte nicht finden, dass viele Lösungen auf dem Internet, also hier ist was ich zu tun hatte.
Ich zunächst eine winzige Konsole E-Mail-Programm zu überprüfen, dass ich tun konnte, grundlegende E-Mail-Versand von meinem Rechner. Dies erfordert, dass Sie einen Abschnitt hinzufügen, um Ihre web.config (oder in der app.config in diesem Fall), die konfiguriert den SMTP-client.
Wenn ich habe, dass die Arbeit, und ich konnte E-Mails senden, von der stand-alone-app, die ich kopiert die benötigten Abschnitt in meinem wichtigsten Projekt-web.config-Datei, und, hot-diggity-Hund, es funktionierte. Hier, nur aus reiner Liebe für meine Mitmenschen, ist die system.net Abschnitt, der hat bei mir mit Gmail...
So, das war der Schlüssel, ich hatte keine system.net Abschnitt in meinem .config-Datei, somit epic fail. Hoffe, das hilft jemand in der Zukunft.
Für gmail müssen Sie EnableSsl auf true. Sie müssen log4net, version 1.2.11.0 in der Lage sein, dies zu tun. Auch für Testzwecke können Sie festlegen, bufferSize-1, d.h. jedes Protokoll geschrieben werden.
Auch für Test-Zwecke können Sie versuchen, zu konfigurieren log4net programmatisch wie:
LinqPad herunterladen der neuesten beta-version. Wählen Sie C# - Programm als LinqPad Abfrage und kopieren Sie vorbei an der oben genannten code, um die Abfrage. Verwenden Sie Ihre Google Mail-Konto und legen Sie einige Ziel-E-Mail-Adresse. Sollte dies funktionieren.