在本文中,我们将给您介绍关于.net–Log4nethtml格式化SmtpAppender的详细内容,此外,我们还将为您提供关于.NetCore3.1log4netADONetAppender自定义数
在本文中,我们将给您介绍关于.net – Log4net html格式化SmtpAppender的详细内容,此外,我们还将为您提供关于.Net Core 3.1 log4net ADONetAppender自定义数据库列、.net – log4net – FileAppender在文件开头写入新条目、.NetCore WebApi 添加 Log4Net、Apache log4net 1.2.12 发布的知识。
本文目录一览:- .net – Log4net html格式化SmtpAppender
- .Net Core 3.1 log4net ADONetAppender自定义数据库列
- .net – log4net – FileAppender在文件开头写入新条目
- .NetCore WebApi 添加 Log4Net
- Apache log4net 1.2.12 发布
.net – Log4net html格式化SmtpAppender
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender"> <to value="zzz@zzz.com"/> <from value="do_not_reply@zz.com"/> <subject value="zzzAdmin Logged Event" /> <smtpHost value="email.zzz.com"/> <bufferSize value="1"/> <lossy value="false"/> <authentication value="Basic" />
我将错误记录为html格式的文本,但电子邮件客户端将HTML呈现为纯文本.
如何告诉SMTPAppender将HTML类型添加到电子邮件消息中,以便客户端将消息呈现为HTML.
解决方法
.Net Core 3.1 log4net ADONetAppender自定义数据库列
如何解决.Net Core 3.1 log4net ADONetAppender自定义数据库列?
我正在尝试使用adonetappender在.net core 3.1 Web应用程序中实现log4net。 我正在将 MicroKnights.Log4Netadonetappender nuget与 System.Data.sqlClient.sqlConnection,System.Data.sqlClient nuget一起使用,并且一切正常。
当我想创建一个自定义列以保存生成日志的应用程序源的编号时,就会出现问题。
配置文件是这样的。
<?xml version="1.0" encoding="utf-8" ?>
<log4net debug="true">
<root>
<level value="ALL" />
<appender-ref ref="adonetappender" />
</root>
<appender name="adonetappender" type="MicroKnights.Logging.adonetappender,MicroKnights.Log4Netadonetappender">
<bufferSize value="1" />
<connectionType value="System.Data.sqlClient.sqlConnection,System.Data.sqlClient,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" />
<connectionString value="My-conextion-string" />
<commandText value="insert into LogItem(LogItemNumber,LogItemDate,LogItemTimeStamp,LogItemSource,LogItemThread,LogItemLevel,LogItemLogger,LogItemmessage,LogItemException) values (@logItemNumber,@logItemDate,@logItemTimeStamp,@logItemSource,@logItemThread,@logItemLevel,@logItemLogger,@logItemmessage,@logItemException)" />
<parameter>
<parameterName value="@logItemNumber" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<param name="%logcounter"/>
<converter>
<name value="%logcounter" />
<type value="NotificacionProgramadaWS.Utilidades.LogCounterPatternConverter" />
</converter>
</layout>
</parameter>
<parameter>
<parameterName value="@logItemDate" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@logItemTimeStamp" />
<dbType value="Int64" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%timestamp" />
</layout>
</parameter>
<parameter>
<parameterName value="@logItemSource" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logcounter" />
</layout>
</parameter>
<parameter>
<parameterName value="@logItemThread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@logItemLevel" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logItemLogger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@logItemmessage" />
<dbType value="String" />
<size value="8000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@logItemException" />
<dbType value="String" />
<size value="8000" />
<layout type="log4net.Layout.ExceptionLayout" />
</parameter>
</appender>
</log4net>
我正在使用转换器生成附加列的内容,并且它不生成数据。我的转换器就是这样。
public sealed class LogCounterPatternConverter : PatternLayoutConverter
{
private static int LogCounter;
protected override void Convert(TextWriter writer,LoggingEvent loggingEvent)
{
writer.Write(LogCounter.ToString(CultureInfo.InvariantCulture));
LogCounter++;
}
}
我还使用了其他类似如下的方法,但是它仍然不起作用
public class LogCounterPatternConverter : PatternConverter
{
private static int _logCounter;
protected override void Convert(TextWriter writer,object state)
{
writer.Write(_logCounter.ToString(CultureInfo.InvariantCulture));
_logCounter++;
}
}
public class LogCounterPatternLayout : PatternLayout
{
public LogCounterPatternLayout()
{
AddConverter(new ConverterInfo
{
Name = "logCounter",Type = typeof(LogCounterPatternConverter)
});
}
}
运行应用程序时显示的错误如下
log4net: Configuration update mode [Merge].
log4net: Logger [root] Level string is [ALL].
log4net: Logger [root] level set to [name="ALL",value=-2147483648].
log4net:ERROR XmlHierarchyConfigurator: No appender named [RollingLogFileAppender] Could be found.
log4net:ERROR Appender named [RollingLogFileAppender] not found.
log4net: Loading Appender [adonetappender] type: [MicroKnights.Logging.adonetappender,MicroKnights.Log4Netadonetappender]
log4net: Setting Property [BufferSize] to Int32 value [1]
log4net: Setting Property [ConnectionType] to String value [System.Data.sqlClient.sqlConnection,PublicKeyToken=b77a5c561934e089]
log4net: Setting Property [ConnectionString] to String value [Server=JAIROJIM;Database=Log4netDb;User Id=UsuarIoUdla;Password=123]
log4net: Setting Property [CommandText] to String value [insert into LogItem(LogItemNumber,@logItemException)]
log4net: Setting Property [ParameterName] to String value [@logItemNumber]
log4net: Setting Property [DbType] to DbType value [String]
log4net: Setting Property [Size] to Int32 value [255]
log4net: Converter [message] Option [] Format [min=-1,max=2147483647,leftAlign=False]
log4net: Converter [newline] Option [] Format [min=-1,leftAlign=False]
log4net:ERROR XmlHierarchyConfigurator: Cannot find Property [%logcounter] to set object on [log4net.Layout.PatternLayout]
log4net: Setting Property [Name] to String value [%logcounter]
log4net:ERROR Could not create Appender [adonetappender] of type [MicroKnights.Logging.adonetappender,MicroKnights.Log4Netadonetappender]. Reported error follows.
System.TypeLoadException: Could not load type ''NotificacionProgramadaWS.Utilidades.LogCounterPatternConverter'' from assembly ''log4net,Version=2.0.8.0,PublicKeyToken=669e0ddf0bb1aa2a''.
at System.Reflection.RuntimeAssembly.GetType(QCallAssembly assembly,String name,Boolean throwOnError,Boolean ignoreCase,ObjectHandleOnStack type,ObjectHandleOnStack keepAlive,ObjectHandleOnStack assemblyLoadContext)
at System.Reflection.RuntimeAssembly.GetType(String name,Boolean ignoreCase)
at log4net.Util.SystemInfo.GetTypeFromString(Assembly relativeAssembly,String typeName,Boolean ignoreCase)
at log4net.Util.TypeConverters.TypeConverter.ConvertFrom(Object source)
at log4net.Util.OptionConverter.ConvertStringTo(Type target,String txt)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ConvertStringTo(Type type,String value)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(XmlElement element,Object target)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.CreateObjectFromXml(XmlElement element,Type defaulttargettype,Type typeConstraint)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.SetParameter(XmlElement element,Object target)
at log4net.Repository.Hierarchy.XmlHierarchyConfigurator.ParseAppender(XmlElement appenderElement)
log4net:ERROR Appender named [adonetappender] not found.
log4net: Hierarchy Threshold []
log4net: No appenders Could be found for logger [Microsoft.Extensions.Hosting.Internal.Host] repository [log4net-default-repository]
log4net: Please initialize the log4net system properly.
log4net: Current AppDomain context information:
log4net: BaseDirectory : Y:\NotificacionesPushCenturylink.Backend\ServicioNotificacionesCenturylink\NotificacionProgramadaWS
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
.net – log4net – FileAppender在文件开头写入新条目
@H_301_0@解决方法
附加到文件是一个非常便宜的操作.字节只是添加到文件的末尾.另一方面,前置文件相当昂贵.必须使用开头添加的新数据读取和重写整个文件.这也意味着它的扩展性很差,即当文件变大时操作需要更长的时间.
如果您希望以不同的顺序显示条目,则应在显示日志的程序中查找该选项,或者查找可以按相反顺序显示条目的替换项.
.NetCore WebApi 添加 Log4Net
一 、配置
1.vs2019 创建一个.net core web程序,选择webapi
2.项目中添加一个配置文件:添加--新建项--XML文件,命名为log4net.config
我使用的是log4net的RollingLogFileAppender,他的好处是按天记录日志,一般日志记录会选择30天
<configuration>
<!-- This section contains the log4net configuration settings -->
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<!--文件位置-->
<file value="LogFile/" />
<!--附加文件-->
<appendToFile value="true" />
<!--按天记录-->
<rollingStyle value="Date" />
<datePattern value="yyyyMMdd''.log''" />
<staticLogFileName value="false" />
<!--只记录31天-->
<MaxSizeRollBackups value="31" />
<!--输出格式-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>
更多选项参考:http://logging.apache.org/log4net/release/config-examples.html
3.startup配置
public static ILoggerRepository repository { get; set; }
public Startup(IConfiguration configuration)
{
Configuration = configuration;
repository = LogManager.CreateRepository("NETCoreRepository");
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
}
二、应用
public class ValuesController : ControllerBase
{
private log4net.ILog log = log4net.LogManager.GetLogger(Startup.repository.Name, typeof(ValuesController));
public ActionResult<string> Get(int id)
{
log.Info($"ValuesController-Get id:{id}");
return "value";
}
}
Apache log4net 1.2.12 发布
Apache log4net 1.2.12 发布了,该版本主要是 bug 修复,修复了来自 JIRA 上报告的问题。完整的记录请看发行说明。
log4net是一个可以帮助程序员把日志信息输出到各种 不同目标的.net类库。它可以容易的加载到开发项目中,实现程序调试和运行的时候的日志信息输出,提供了比.net自己提供的debug类和trace 类的功能更多。log4net是从java下有卓越表现的log4j移植过来的。它是apache基金资助的项目的一部分。
今天关于.net – Log4net html格式化SmtpAppender的讲解已经结束,谢谢您的阅读,如果想了解更多关于.Net Core 3.1 log4net ADONetAppender自定义数据库列、.net – log4net – FileAppender在文件开头写入新条目、.NetCore WebApi 添加 Log4Net、Apache log4net 1.2.12 发布的相关知识,请在本站搜索。
本文标签: