Log4Net SmtpAppender pour WebEmail - Pas d'Envoi
Je vais essayer d'obtenir Log4Net web e-mail, Yahoo ou Gmail. Si vous avez ce travail, j'apprécierais un peu d'aide, et merci d'avance.
J'ai une racine par défaut, l'enregistreur, avec un RollingFileAppender et un SmtpAppender.
Le fichier appender fonctionne bien. Le SmtpAppender me donne rien.
Je suis l'appel de l'enregistreur de données de diagnostic, cliquez sur le bouton...
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.");
}
...et la RollingFileAppender est de faire passer le message...
LOC=20120921-12:03:16.319,UTC=20120921-11:03:16.319,DELTA=10078,THR=6,ERREUR,JOURNAL=racine[(null)] - btnReloadContractConfig_Click() - Ceci est un TEST de livraison de messages d'erreur par e-mail, déclenché à partir de l'Admin.aspx.cs fichier de code.
Le web.config entrées pour Log4Net êtes ici::
<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>
Le web.config est récupéré dans le monde.asax fichier, dans le Application_Start() gestionnaire...
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()");
}
L'admin de la page web qui déclenche l'e-mail tentative semble accrocher soit indéfiniment, ou de se suspendre momentanément (une demi seconde) et continuer.
L'environnement de dev ne s'écroule pas avec une exception, c'est d'accrocher ou de glisser sur sans erreur.
- Comment puis-je obtenir plus de diagnostics de la SmtpAppender?
- Puis-je tester de façon indépendante le port/config pour vérifier un bloc local sur le programmatique e-mail?
- Est un log4net email garanti d'être envoyé? Les pertes de et bufferSize propriétés
semblent très sensibles, si je le mets avec perte=faux, j'obtiens une durée indéterminée accrocher...
Pour référence, je suis avec VS 2010, ASP.Net4, et beaucoup de caféine. Merci encore pour toutes les prochaines aider.
OriginalL'auteur Steve Hibbert | 2012-09-21
Vous devez vous connecter pour publier un commentaire.
OK, compris, et je suis maintenant à recevoir des courriels. Je ne pouvais pas trouver beaucoup de solutions sur les Internets, voici donc ce que j'avais à faire.
J'ai d'abord mis en place une petite console de courriel pour valider que je pouvais faire de base d'envoi de courrier électronique à partir de ma machine. Cela vous oblige à ajouter un article à votre site web.config (ou de l'application.config dans ce cas) qui configure le client SMTP.
Quand je l'ai eu à travailler, et j'ai pu envoyer des e-mails à partir de la version stand-alone application, j'ai copié la section obligatoire dans mon projet principal du web.fichier de config, et, à chaud, diggity chien, il a travaillé. Ici, juste par pur amour pour mes frères humains, est la system.net l'article qui a fonctionné pour moi avec Gmail...
De sorte que c'était la clé, je n'ai eu aucun system.net section dans mon .fichier de config, donc epic fail. Espérons que cela aide quelqu'un d'autre dans l'avenir.
Yep, j'ai réussi enfin
Vous pouvez poster ce que votre log4net paramètres ressemblait pour la SmtpAppender ici? Curieux de ce que la combinaison j'ai besoin ici.
Ressemble à l'hôte, port, nom d'utilisateur & mot de passe éléments de la smtp appender sont totalement redondante. Je les ai retirées de mon appender et il utilise à la system.net/mailSettings/smtp config.
Exactement. J'ai aussi découvert que je pouvais utiliser HMailServer installé en local sur mon serveur afin d'agir comme le SMTP relais, ce qui a aidé. J'ai maintenant du courrier électronique fiable de l'exploitation forestière.
OriginalL'auteur Steve Hibbert
Pour gmail, vous avez à mettre EnableSsl de vrai. Vous avez besoin de log4net version 1.2.11.0 pour être en mesure de le faire. Aussi, pour des fins de test, vous pouvez définir la taille de tampon de 1, c'est à dire tous les journaux seront écrites.
Également à des fins de test, vous pouvez essayer de configurer log4net par programmation comme:
Télécharger LinqPad la dernière version bêta. Choisissez programme C# comme LinqPad requête et copie passé le code ci-dessus à la requête. Utiliser votre compte gmail et de définir une cible adresse e-mail. Cela devrait fonctionner.
log4net:ERREUR [SmtpAppender] ErrorCode: GenericFailure. Erreur s'est produite lors de l'envoi d'e-mail de notification. Système.Net.Mail.SmtpException: Le serveur SMTP nécessite une connexion sécurisée ou le client n'est pas authentifié. La réponse du serveur est: 5.5.1 Authentification Requise.
Je suppose que le enableSsl paramètre n'est pas de travail. Êtes-vous en utilisant le binaire compilé DLL de 1.2.11, ou construire vous-même? Je suis l'aide de la DLL.
Obtenu le code source et construit 1.2.11 localement - pas de joie. Essayé un build avec NET_2_0. Pas de joie. J'ai le sentiment que je suis absent quelque chose d'évident.
OriginalL'auteur halcwb