快捷搜索:

笔录日志,元组类型

作者: 手机赌钱游戏大全  发布:2019-12-12

今日头条潜水了有八年多,将来想分享三个足以说是协理类吧。

 

转自:

    近日写了个准期邮件推送的劳动,当使用lognet4笔录日志时,开采日志并不曾记录。后来精通windows 服务日常暗中认可是在C:WindowsSystem 或是C:WindowsSystem32,而笔者辈和睦的服务程序平时是坐落其余的目录,那样log4net.config文件中的配置路线将无法正确深入解析。所以就不能够记录日志。本来笔者的lognet4文件与劳动文件坐落于同一目录,后来自己就把lognet4.config文件放在了程序exe所在的目录。

 元组Tuple

我们在编写程序的进度中,平日会用到有的艺术,笔者只是把那么些艺术结合一下,方便使用,近来有md5,sha1,aes加解密,身份ID注脚,敏感词过滤,文件减弱,图片与base64相互调换,时间戳与时间相互调换,轻松的http需要,简单的ftp上传下载,依据早先和结尾字符串截取字符串等等,后续思忖把日记记录,支付宝和Wechat支付举行增添,方便使用,要是您在编制程序的历程中有比较常用的方式,能够建议来,我们可以联手来宏观那一个扶持类,如若有畸形的地点,恳请指正争辨,感谢大家,心仪能够分享哦。

方法一:

那篇小说将介绍ASP.NET Core中接纳开源项目 Payment,实现联网支付宝-Computer网页支付接口及协办跳转及异步文告效用。

    1.  笔者的lognet4.config文件配置内容如下:

 

nuget:Install-Package ToolHelper -Version 1.2.2

public static string Reverse(string name)
{
     if (String.IsNullOrEmpty(name))
       {
           throw new Exception("字符串无法为空!"卡塔尔(قطر‎;
       }
    StringBuilder sb = new StringBuilder(name.Length);
    for (int i = name.Length-1; i >= 0; i--)
     {
        sb.Append(name[i]);
    }
        return sb.ToString();
}

支出条件:Win 10 x64、VS2017 15.6.4、.NET Core SDK 2.1.101、.NET Core Runtime 2.0.6

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
 </configSections>

  <log4net>
    <logger name="sendEmailrError">
      <level value="ALL"/>
      <!--ALL DEBUG INFO WARN ERROR FATAL OFF-->
      <appender-ref ref="RollingLogFileAppender"/> 
    </logger>

    <!--<logger name="ugmrob2bLoggerInfo">
      <level value="ALL"/>
      --><!--ALL DEBUG INFO WARN ERROR FATAL OFF--><!--
      <appender-ref ref="LoggerInfo"/>
    </logger>-->

    <appender name="LoggerInfo" type="log4net.Appender.RollingFileAppender"> 
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--存放日志的路径-->
      <param name="File" value="E:/Log/LogInfo/"/>
      <!--日志文件中追加-->
      <param name="AppendToFile" value="true"/>
      <!--日期文件是否固定不变-->
      <param name="StaticLogFileName" value="false"/>
      <!--最多保存多少天的记录-->
      <param name="MaxSizeRollBackups" value="100"/>
      <param name="MaximumFileSize" value="5MB"/>
      <!--日志名称-->
      <param name="DatePattern" value="yyyy-MM-dd".log""/>
      <!--日志根据日期滚动-->
      <param name="RollingStyle" value="Date"/>

      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%n异常时间: %d%n记录器: %c%n异常信息: %m%n异常位置:[%t] %-5p [%l]%n"/>
      </layout>
    </appender>

    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
      <!--存放日志的路径-->
      <param name="File" value="E:/Log/LogError/"/>
      <!--日志文件中追加-->
      <param name="AppendToFile" value="true"/>
      <!--日期文件是否固定不变-->
      <param name="StaticLogFileName" value="false"/>
      <!--最多保存多少天的记录-->
      <param name="MaxSizeRollBackups" value="100"/>
      <param name="MaximumFileSize" value="5MB"/>
      <!--日志名称-->
      <param name="DatePattern" value="yyyy-MM-dd".log""/>
      <!--日志根据日期滚动-->
      <param name="RollingStyle" value="Date"/>
      <layout type="log4net.Layout.PatternLayout">
        <!--<param name="ConversionPattern" value="%n异常时间: %d%n记录器: %c%n异常信息: %m%n异常位置:[%t] %-5p [%l]%n"/>-->
        <conversionPattern value="%n记录时间:%date 线程ID:[%thread] 日志级别:%-5level  %n错误描述:%message%newline" />

      </layout>
      <!--<filter type="log4net.Filter.LevelRangeFilter">
        <param name="LevelMin" value="DEBUG"/>
        <param name="LevelMax" value="FATAL"/>
      </filter>-->
    </appender>

  </log4net>

</configuration>

  大家明天接纳的C#语法已经得以满足普通的付出须要,但C#语法还在举办版本的更新,在开创越来越多越来越美好的语义来让大家应用。这里介绍一下C#5.0里的提供的语法——元组。

github:

 

笔录日志,元组类型。1.新建"ASP.NET Core Web 应用程序"项目,笔者将它定名叫AlipaySample.

 2. 随着在Main入口函数解析lognet4.config文书。

  在C#中定义Tuple对象,转到定义查看,我们会看到如下代码

 

方法二:.NET3.5以上

图片 1

  static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        static void Main()
        {
            string assemblyFilePath = Assembly.GetExecutingAssembly().Location;
            string assemblyDirPath = Path.GetDirectoryName(assemblyFilePath);
            string configFilePath = assemblyDirPath + "\log4net.config";
            XmlConfigurator.ConfigureAndWatch(new FileInfo(configFilePath));

            ServiceBase[] ServicesToRun;
            ServicesToRun = new ServiceBase[] 
            { 
                new SendEmailService() 
            };
            ServiceBase.Run(ServicesToRun);
        }
    }
 #region 程序集 mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
 // C:Program Files (x86)Reference AssembliesMicrosoftFramework.NETFrameworkv4.6mscorlib.dll
 #endregion

只需三步走,咱们就足以行使这一个办法了。

public static string Reverse(string name)
{
     char[] reverse = name.Reverse().ToArray();

图片 2

 3.  实例ILog,初叶记录日志,当中sendEmailrError为lognet4.config文件中logger的name名称。

  即该语法在.Net Framework4框架中曾经得以支撑了。

  1,nuget 安装 ToolHelper

     return new string(reverse);
}

  1. 引进安装Nuget包 "Essensoft.AspNetCore.Payment.Alipay". 目前(2018/03/29)版本为 1.2.1
log4net.ILog log = log4net.LogManager.GetLogger("sendEmailrError");
log.Error("错误信息");

  元组Tuple是后生可畏种数据结构,具备特定数量和因素类别。什么看头啊?正是元组是足以储备七种类型的对象,可以想象一下当贰个函数具有多少个不等类别的重临值时,我们除了定义了二个重返值以外,还要定义八个out或ref类型重临值技能缓和这一个需求;当然我们也得以定义叁个对象保存几个重返值。但最近我们多了二个缓慢解决方案,定义重临值为三个元组,就解决了全数。

    图片 3

 

图片 4

  

  元组Tuple是能够储备两种类型的数据的。NET Framework 直接补助全部 1 到 7 成分的元组。 别的,您能够创建由嵌套中的元组对象的元组的多少个或五个成分Rest属性Tuple<T1, T2, T3, T4, T5, T6, T7, TRest>对象。

 

方法三:二分法

图片 5

    

  元组常用各个格局︰

 

public static string Reverse(string name)
{
   if (String.IsNullOrEmpty(name))
   {
      throw new Exception("字符串不能够为空!"卡塔尔;
   }
  char[] nm = name.ToCharArray();
  for (int i = 0; i < (nm.Length-1 )/ 2; i++)
  {
     char q = nm[i];
     nm[i]= nm[nm.Length - 1 - i];
    nm[nm.Length - 1 - i] = q;
  }

  1. 在Startup.cs文件内 添加重视注入、设置参数(蚂蚁金服开放平台 - 账户管理 - 密钥管理 - 开放平台密钥)

  1,用来代表后生可畏组数据。 举个例子,三个元组能够表示的数据库记录,何况其组件能够象征每一个字段的记录。

  2,增多命名空间

  return new string(nm);

代码:

  2,若要提供轻易访谈和数据集的操作。

  图片 6

}

图片 7

  3,out参数 (在 C# 中) 或ByRef参数 (在 Visual Basic 中)。

  3,先导选用

 

图片 8

  4,若要将多少个值传递给通过单个参数的艺术。 比方,Thread.Start(Object卡塔尔国方法唯有一个参数,允许你提供多少个线程在运行时实施的形式的值。要是您提供Tuple<T1, T2, T3>对象作为艺术自变量,则足以提供有多个项的多寡的线程的启航例程。

下边介绍那几个支持类近日部分的片段方法:

 1         public void ConfigureServices(IServiceCollection services)
 2         {
 3             services.AddMvc();
 4 
 5             // 添加支付宝客户端依赖注入
 6             services.AddAlipay();
 7 
 8             // 可在添加依赖注入时设置参数 一般设置 AppId、RsaPrivateKey、RsaPublicKey,其余默认即可.
 9             // 如:
10             //services.AddAlipay(opt =>
11             //{
12             //    //此处为蚂蚁金服开放平台上创建的APPID,而非老版本的商户号
13             //    opt.AppId = "";
14 
15             //    // 这里的公私钥 默认均为支付宝官方推荐使用的RSAWithSHA256.
16             //    // 商户私钥
17             //    opt.RsaPrivateKey = "";
18             //    // 支付宝公钥
19             //    opt.RsaPublicKey = "";
20             //});
21 
22             // 具体参数见 AlipayOptions
23 
24             // 注册配置实例
25             services.Configure<AlipayOptions>(Configuration.GetSection("Alipay"));
26 
27             // 两种方式设置注册配置实例参数
28 
29             // 1.默认配置文件(开发环境/正式环境):
30             // appsettings.Development.json / appsettings.json
31 
32             // 2.用户机密配置文件(VS2017 15.6.4 中,右键项目 => 管理用户机密):
33             // Windows: % APPDATA %microsoftUserSecrets< userSecretsId >secrets.json
34             // Linux: ~/.microsoft / usersecrets /< userSecretsId >/ secrets.json
35             // macOS: ~/.microsoft / usersecrets /< userSecretsId >/ secrets.json
36 
37             // 配置文件内容如下('...'为省略的项目其他配置内容,若有的情况下 -_-!):
38 
39             //{
40             // ...
41             // ...
42             //
43             //  "Alipay": {
44             //    "AppId": "",
45             //    "RsaPublicKey": "",
46             //    "RsaPrivateKey": ""
47             //  }
48             //}
49         }
 class Program
    {
        static void Main(string[] args)
        {
            var tuple = new Tuple<string, int, int, int>(
                             "Kiba", 00001, 00002,
                             00003);

            Console.WriteLine(tuple.Item1);
            Console.WriteLine(tuple.Item2);
            Console.WriteLine(tuple.Item3);
            Console.WriteLine(tuple.Item4);

            var tupleCalss = new Tuple<A, B>(
                         new A(), new B());
            Console.WriteLine(tupleCalss.Item1.Name);
            Console.WriteLine(tupleCalss.Item2.Name);
            Console.ReadKey();
        }
    }
    public class A
    {
        public string name = "A";

        public string Name { get => name; set => name = value; }
    }
    public class B
    {
        public string Name = "B";
    }
}

本文由手机赌钱游戏大全发布于手机赌钱游戏大全,转载请注明出处:笔录日志,元组类型

关键词:

上一篇:没有了
下一篇:Wechat经营发卖系统,log4net使用格局