欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C#学习日记12

程序员文章站 2024-03-22 12:29:58
...

1.Fact注解
解析:
C#学习日记12

2.dotnet test
解析:dotnet test --filter “Category=New|Category=Name”

3.忽略测试
解析:[Fact(Skip=“不需要跑这个测试”)]

4.自定义测试输出信息ITestOutputHelper
解析:构造函数依赖注入:

private readonly ITestOutputHelper _output;
public PatientShould(ITestOutputHelper output)
{
    _output = output;
}
[Fact]
[Trait("Category", "New")]
public void BeNewWhenCreated()
{
    _output.WriteLine("第一个测试");
}

5.分组测试
解析:[Trait(“Category”, “New”)]

6.C#中的各种注释
解析:
[1]<c>:把行中的文本标记为代码,比如<c>inti=10;</c>
[2]<code>:把多行标记为代码
[3]<example>:标记为一个代码示例
[4]<exception>:说明一个异常类[编译器要验证其语法]
[5]<include>:包含其他文档说明文件的注释[编译器要验证其语法]
[6]<list>:把列表插入到文档说明中
[7]<param>:标记方法的参数[编译器要验证其语法]
[8]<paramref>:表示一个单词是方法的参数[编译器要验证其语法]
[9]<permission>:说明对成员的访问[编译器要验证其语法]
[10]<remarks>:给成员添加描述
[11]<returns>:说明方法的返回值
[12]<see>:提供对另一个参数的交叉引用[编译器要验证其语法]
[13]<seealso>:提供描述中的参见部分[编译器要验证其语法]
[14]<summary>:提供类型或成员的简短小结
[15]<value>:描述属性

7.Fluent Assertions
解析:Fluent Assertions是.NET平台下的一组扩展方法,用于单元测试中的断言,它使单元测试中的断言看起来更自然流畅。https://github.com/fluentassertions/fluentassertions

8.Log4Net
解析:Logger发出记录信息,Appender接到信息,根据内部的Layout配置对记录信息格式化,然后根据Filter对记录信息进行筛选,最后将其记录到指定介质中。

9.AssemblyInfo.cs文件
解析:log4net会自动寻找配置文件App.config或Web.config从而获得并加载其中的配置信息:

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension="config", Watch = true)]

说明:winform程序ConfigFile为App.config。相当于读取配置文件中的内容并初始化:log4net.Config.XmlConfigurator.Configure();

10.Log4Net输出方式
解析:
[1]AdoNetAppender:将日志记录到数据库中。可以采用SQL和存储过程两种方式。
[2]AnsiColorTerminalAppender:在ANSI窗口终端写下高亮度的日志事件。
[3]AspNetTraceAppender:能用asp.net中Trace的方式查看记录的日志。
[4]BufferingForwardingAppender:在输出到子Appenders之前先缓存日志事件。
[5]ConsoleAppender:将日志输出到控制台。
[6]EventLogAppender:将日志写到Windows Event Log。
[7]FileAppender:将日志写到文件中。
[8]LocalSyslogAppender:将日志写到local syslog service[仅用于UNIX环境下]
[9]MemoryAppender:将日志存到内存缓冲区。
[10]NetSendAppender:将日志输出到Windows Messenger service,这些日志信息将在用户终端的对话框中显示。
[11]RemoteSyslogAppender:通过UDP网络协议将日志写到Remote syslog service。
[12]RemotingAppender:通过.NET Remoting将日志写到远程接收端。
[13]RollingFileAppender:将日志以回滚文件的形式写到文件中。
[14]SmtpAppender:将日志写到邮件中。
[15]TraceAppender:将日志写到.NET trace系统。
[16]UdpAppender:将日志connectionless UDP datagrams的形式送到远程宿主或以UdpClient的形式广播。

11.定义输出到文件中
解析:

<appender name="LogFileAppender" type="log4net.Appender.FileAppender">
    <!--定义文件存放位置-->
    <file value="C:\log.txt" />
    <appendToFile value="true" />
    <rollingStyle value="Date" />
    <datePattern value="yyyyMMdd-HH:mm:ss" />
    <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <!--样例:2008-03-26 13:42:32,111 [10] INFO  Log4NetDemo.MainClass [(null)] - info-->
        <conversionPattern value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 出错类:%logger property:[%property{NDC}] - 错误描述:%message%newline" />
    </layout>
</appender>

12.输出格式
解析:
[1]%m(message):输出的日志消息,比如ILog.Debug(…)输出的一条消息
[2]%n(newline):换行
[3]%d(datetime):输出当前语句运行的时刻
[4]%r(runtime):输出程序从运行到执行到当前语句时消耗的毫秒数
[5]%t(threadid):当前语句所在的线程ID
[6]%p(priority):日志的当前优先级别,即DEBUG、INFO、WARN…等
[7]%c(class):当前日志对象的名称
[8]%f(file):输出语句所在的文件名
[9]%l(line):输出语句所在的行号
[10]%数字:表示该项的最小长度,如果不够,则用空格填充,比如%-5level表示level的最小宽度是5个字符,如果实际长度不够5个字符则以空格填充

13.定义输出到控制台命令行中
解析:

<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
    </layout>
</appender>

14.日志类别
解析:FATAL[致命错误]、ERROR[一般错误]、WARN[警告]、INFO[一般信息]、DEBUG[调试信息]。

15.创建日志记录组件实例
解析:

ILog log = log4net.LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);

16.日志信息格式
解析:
C#学习日记12

17.日志级别
解析:
[1]TRACE:记录一些对程序员调试问题有帮助的信息,其中可能包含一些敏感信息,所以应该避免在生产环境中启用Trace日志。
[2]DEBUG:记录一些在开发和调试阶段有用的短时变量[Short-term usefulness],所以除非为了临时排除生产环境的故障,开发人员应该尽量避免在生产环境中启用Debug日志。
[3]INFO:信息日志。记录应用程序的一些流程,比如记录当前api请求的url、请求参数等。
[4]WARN:警告日志。记录应用程序中发生的不正常或者未预期的事件信息。这些信息中可能包含错误消息或者错误产生的条件,比如文件未找到、用户不存在。
[5]ERROR:错误日志。记录应用程序中某个操作产生的错误和异常信息,比如对空值进行操作等。
[6]FATAL:毁灭性错误。记录一些需要立刻修复的问题。比如数据丢失、磁盘空间不足。

18.log4net.Layout.PatternLayout
解析:

<layout type="log4net.Layout.PatternLayout">
        <conversionPattern value="%n==========
                                  %n【日志级别】%-5level
                                  %n【记录时间】%date
                                  %n【线程编号】[%thread]
                                  %n【执行时间】[%r]毫秒
                                  %n【出错文件】%F
                                  %n【出错行号】%L
                                  %n【出错的类】%logger 属性[%property{NDC}]
                                  %n【错误描述】%message
                                  %n【错误详情】%newline"/>
</layout>

19.MS SQL Server日志表定义
解析:

CREATE TABLE [dbo].[Log] (
    [Id] [int] IDENTITY (1, 1) NOT NULL,
    [Date] [datetime] NOT NULL,
    [Thread] [varchar] (255) NOT NULL,
    [Level] [varchar] (50) NOT NULL,
    [Logger] [varchar] (255) NOT NULL,
    [Message] [varchar] (4000) NOT NULL,
    [Exception] [varchar] (2000) NULL
)

20.日志格式
解析:%timestamp [%thread] %-5level %logger{2} %ndc - %message%newline:
C#学习日记12

21.Log4Net命名空间
解析:
C#学习日记12

22.HslCommunication
解析:一个工业物联网底层架构框架,专注于底层技术通信和跨平台、跨语言通信功能,实现多种主流PLC数据读写,实现各种协议的Modbus读写等,支持工业上层的快速建设。计算机软件、组态软件、SCADA软件、工厂MES系统,帮助企业工业4.0起飞,实现智能制造、智能工厂的目标。主PLC包括西门子、三菱、欧姆龙、松下、Modbus、AB-PLC、Redis。
说明:Install-Package HslCommunication。

23.工业软件
解析:
[1]工业软件,上位机软件,SCADA软件,三菱PLC,数据追述系统,MES软件。
[2]C#和三菱PLC通讯,C#和西门子通讯,欧姆龙,松下,AB PLC。
[3]C#和PLC通信。

24.STM32
解析:STM32系列专为要求高性能、低成本、低功耗的嵌入式应用设计的ARM Cortex-M0,M0+,M3,M4和M7内核。

25.电子秤置零
解析:电子秤置零是针对输入价格起作用的,当输入一个价格后,想输入另一个价格时,按置零键使价格归零,然后输入另一个价格。

参考文献:
[1]单元测试-xUnit总结:https://blog.csdn.net/xingkongtianyuzhao/article/details/104526999/
[2]使用xUnit.NET对.NET Core项目进行单元测试:https://www.bilibili.com/video/BV1Bb411V7kk?p=4
[3]log4net:http://logging.apache.org/log4net/
[4]https://github.com/apache/logging-log4net/
[5]log4net Namespace:http://logging.apache.org/log4net/release/sdk/index.html