平常心
不要浮躁,要冷静。
不要去争,要沉稳。
不要猴急,心态要放平。
要强势,也要留退路。
三思而行
多听听,多看看。
多想想,想清楚。
全盘考虑,不要遗漏每个环节。
离成功越近,离失败也就不远了。
平常心
不要浮躁,要冷静。
不要去争,要沉稳。
不要猴急,心态要放平。
要强势,也要留退路。
三思而行
多听听,多看看。
多想想,想清楚。
全盘考虑,不要遗漏每个环节。
离成功越近,离失败也就不远了。
在C#中Web应用程序一般是由IIS启动管理的,所以我们可以通过判断是否存在应用程序的入口程序集来确定当前应用程序是否是Web应用程序:
bool isWeb = Assembly.GetEntryAssembly() == null;
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!--配置log4net解析-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<connectionStrings>
<!--配置log4net写入Sqlite数据库的连接字符串-->
<add name="sqlite" connectionString="Data Source=|DataDirectory|log4net.db;Version=3;Compress=True;UTF8Encoding=True;" />
</connectionStrings>
<log4net>
<!--配置输出到跟踪中-->
<appender name="trace" type="log4net.Appender.TraceAppender, log4net">
<!--配置日志输出格式-->
<layout type="log4net.Layout.PatternLayout, log4net" value="[%d][%t][%p][%c]%m%n%exception" />
</appender>
<!--配置输出到文件中-->
<appender name="file" type="log4net.Appender.RollingFileAppender, log4net">
<!--配置日志文件-->
<file value="logs/log4net.txt" />
<!--配置日志文件存时,继续添加日志-->
<appendToFile value="true" />
<!--配置日志文件名以时间格式创建-->
<rollingStyle value="Date" />
<!--配置日志文件名的时间格式-->
<datePattern value="yyyyMMddHHmmss" />
<!--配置日志输出格式-->
<layout type="log4net.Layout.PatternLayout, log4net" value="[%d][%t][%p][%c]%m%n%exception" />
</appender>
<!--配置输出到控制台中-->
<appender name="console" type="log4net.Appender.ColoredConsoleAppender, log4net">
<!--配置日志输出格式-->
<layout type="log4net.Layout.PatternLayout, log4net" value="[%d][%t][%p][%c]%m%n%exception" />
</appender>
<!--配置输出到数据库中-->
<appender name="database" type="log4net.Appender.AdoNetAppender, log4net">
<!--日志缓存,当日志数达到设置数时执行写入数据库-->
<bufferSize value="1" />
<!--配置数据库连接字符串-->
<connectionStringName value="sqlite" />
<!--配置数据库连接对象类型-->
<connectionType value="System.Data.SQLite.SQLiteConnection, System.Data.SQLite" />
<!--配置数据库insert语句-->
<commandText value="insert into T_Log4Net (C_Date, C_Thread, C_Level, C_Logger, C_Message) values (@date, @thread, @level, @logger, @message)" />
<!--配置数据库insert语句参数-->
<parameter>
<parameterName value="@date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout, log4net" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout, log4net" value="%t" />
</parameter>
<parameter>
<parameterName value="@level" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout, log4net" value="%p" />
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout, log4net" value="%c" />
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<layout type="log4net.Layout.PatternLayout, log4net" value="%m" />
</parameter>
</appender>
<root>
<!--输出所有日志级别-->
<level value="ALL" />
<!--输出跟踪日志-->
<appender-ref ref="trace" />
<!--输出文件日志-->
<appender-ref ref="file" />
<!--输出控制台日志-->
<appender-ref ref="console" />
<!--输出数据库日志-->
<appender-ref ref="database" />
</root>
</log4net>
</configuration>
最近在使用“Assembly.LoadFile(string path)”加载程序集文件时发现无法正常释放资源,文件一直被占用,一定要关闭主调程序后才能解除文件占用。
经测试,可以改用“Assembly.Load(byte[] rawAssembly)”方法加载程序集,这样就不占用程序集文件了。
byte[] rawAssembly = File.ReadAllBytes(path); Assembly assembly = Assembly.Load(rawAssembly);