项目列表初识
项目结构初识
Connected Services:添加服务依耐项
Properties文件夹下的launchSettings.json:项目启动时的一些配置
wwwroot:包含css,js,涉及到的静态文件
Controllers:控制器
modles:模型
Views:视图
.NET6项目文件相较于.net5少了setup文件
基本功能开发
我们在controllers里添加一个控制器名为FirstControllers的类文件作为我们的控制器,我们打开FirstControllers类文件鼠标右键选择添加视图------->选择Razor视图进行添加对应的就会在我们views文件夹下生成一个和控制器前缀名相同的文件夹里面存放的就是我们刚才添加的视图文件
控制器:
控制器主要调用其他的服务进行一些业务逻辑的计算,当我们在控制器里进行了一堆的计算以后,我们怎么把这个计算的结果传递给我们的视图层呢
controllers:
Index.cshtml里面:
注意我们在使用Session的时候是需要注册的
当我们在Program.cs文件里注册完以后我们直接运行我们的程序进入到first/index下我们就可以看到我们从控制器里取到的值了
日志组件Log4net
我们不允许没有日志监控的项目上线,任何时候我们都应该养成写日志的习惯,这对我们是非常有益的,就好比多了双眼睛盯着我们的项目在运行的时候究竟会不会有什么问题。我们可以通过日志更快速且精准的定位到问题和解决问题
Nuget引入程序包
进行安装,我们右键点击依耐项,选择下图对应的操作进行log4net的安装,注意选择版本
我们在安装完成后还需要对log4net做一些提前准备工作我们才能继续使用
准备好配置文件
新建一个名为CfgFile的文件夹里面新建一个txt文本框复制下方的代码
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<appender name="DebugAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\Log\Debug.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<!--默认是ExclusiveLock, MinimalLock每次都打开关闭文件。不占用日志文件进程-->
<lockingModel type="log4net.Appender.FileAppender+ExclusiveLock" />
<datePattern value="yyyyMMdd" />
<countDirection value="1"/>
<maxSizeRollBackups value="-1" />
<!--<maximumFileSize value="10MB" />-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date|%logger|%message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="DEBUG" />
<levelMax value="DEBUG" />
</filter>
</appender>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\Log\Error.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<!--默认是ExclusiveLock, MinimalLock每次都打开关闭文件。不占用日志文件进程-->
<lockingModel type="log4net.Appender.FileAppender+ExclusiveLock" />
<datePattern value="yyyyMMdd" />
<countDirection value="1"/>
<maxSizeRollBackups value="-1" />
<!--<maximumFileSize value="1MB" />-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date|%logger|%message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="ERROR" />
</filter>
</appender>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\Log\Info.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<!--默认是ExclusiveLock, MinimalLock每次都打开关闭文件。不占用日志文件进程-->
<lockingModel type="log4net.Appender.FileAppender+ExclusiveLock" />
<datePattern value="yyyyMMdd" />
<countDirection value="1"/>
<maxSizeRollBackups value="-1" />
<!--<maximumFileSize value="1MB" />-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date|%logger|%message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<appender name="WarnAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\Log\Warn.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<!--默认是ExclusiveLock, MinimalLock每次都打开关闭文件。不占用日志文件进程-->
<lockingModel type="log4net.Appender.FileAppender+ExclusiveLock" />
<datePattern value="yyyyMMdd" />
<countDirection value="1"/>
<maxSizeRollBackups value="-1" />
<!--<maximumFileSize value="1MB" />-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date|%logger|%message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="WARN" />
<levelMax value="WARN" />
</filter>
</appender>
<appender name="FatalAppender" type="log4net.Appender.RollingFileAppender">
<file value=".\Log\Fatal.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<!--默认是ExclusiveLock, MinimalLock每次都打开关闭文件。不占用日志文件进程-->
<lockingModel type="log4net.Appender.FileAppender+ExclusiveLock" />
<datePattern value="yyyyMMdd" />
<countDirection value="1"/>
<maxSizeRollBackups value="-1" />
<!--<maximumFileSize value="1MB" />-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date|%logger|%message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="FATAL" />
<levelMax value="FATAL" />
</filter>
</appender>
<!--log4net 对于.netcore 本身不支持 AdoNetAppender,此处引用了MicroKnights.Log4NetAdoNetAppender,实现日志入库,
以下注释部分为非.netcore 中的相关配置-->
<!--<appender name="AdoNetAppender" type="log4net.Appender.AdoNetAppender">-->
<!--<appender name="AdoNetAppender" type="MicroKnights.Logging.AdoNetAppender, MicroKnights.Log4NetAdoNetAppender">
<bufferSize value="1" />
<threshold value="ALL"/>
<connectionType value="System.Data.SqlClient.SqlConnection,System.Data.SqlClient,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089" />
<connectionString value="data source=127.0.0.1;initial catalog=LogsDataBase;integrated security=false;persist security info=True;User ID=sa;Password=sa123" />
<commandText value="INSERT INTO SysLog_Log4net_tousulog ([LastTime],[LogThread],[LogLevel],[Logger],[LogMessage],[LogException]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)" />
<parameter>
<parameterName value="@log_date" />
<dbType value="DateTime" />
<layout type="log4net.Layout.RawTimeStampLayout" />
</parameter>
<parameter>
<parameterName value="@thread" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%thread" />
</layout>
</parameter>
<parameter>
<parameterName value="@log_level" />
<dbType value="String" />
<size value="50" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%level" />
</layout>
</parameter>
<parameter>
<parameterName value="@logger" />
<dbType value="String" />
<size value="255" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%logger" />
</layout>
</parameter>
<parameter>
<parameterName value="@message" />
<dbType value="String" />
<size value="4000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%message" />
</layout>
</parameter>
<parameter>
<parameterName value="@exception" />
<dbType value="String" />
<size value="2000" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%exception" />
</layout>
</parameter>
</appender>-->
<root>
<level value="ALL"/>
<appender-ref ref="DebugAppender" />
<appender-ref ref="ErrorAppender" />
<appender-ref ref="InfoAppender" />
<appender-ref ref="WarnAppender" />
<appender-ref ref="FatalAppender" />
<appender-ref ref="AdoNetAppender" />
</root>
</log4net>
我们讲txt格式改为config格式将整个文件夹放入到我们的项目位置中去如下图所示
我们还需要选择该文件点击属性将该文件的生成操作改为始终复制,因为我们最终这个配置文件最终要去我们项目的运行目录下去(bin--debug-.net6.0文件夹下)只有我们设置了始终复制,我们的文件编译的时候才会把这个文件夹一起带过来
配置读取配置文件生效
我们需要再program.cs文件中写入这句话,在写入这句话之前我们需要引入Microsoft.Extensions.Logging.Log4Net.AspNetCore这个Nuget包,我这里下载的是6.0
这样我们这个就不会报错了
注入得到Log4net实例开始写日志
再开始之前我们需要建立第二个控制器和第二个视图
SecondController:
写完以后我们启动程序进入到我们的第二个控制器里面这个时候我们打开项目的文件路径我们就会发现多了一个文件夹叫Log,里面就是我们的日志
这样子我们的log4net就使用成功了