境况布署Asp,记录日志

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

3.  部署环境

Asp.Net Core App部署需要操作系统满足:

  • Windows 7 或更新版本
  • Windows Server 2008 R2 或更新版本
  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);
        }
    }

1.  Asp.Net Core的部署模式

与传统的Asp.Net程序不同,Asp.Net Core
App使用了Kestrel Server。Kestrel是一个跨平台的Web
Server,与IIS一样负责请求的监听、接收和响应,但没有IIS丰富的管理功能,仍需要由IIS来处理一些前置工作。(当然你也可以使用Apache来做前置处理)

图片 1

IIS负责把外部请求转发给后端的Asp.net Core
App,充当“反向代理(reverse-proxy)”角色。

<?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>

环境:Windows Server 2012, IIS 8, Asp.Net
Core 1.1.

    

6.  IIS中配置Asp.Net Core App

接下来的步骤与部署传统网站基本一致,但也有稍许不同,请留意。

1)
 服务器中创建目录存放发布以后的App程序文件,确保App的web.config文件在网站根目录下。

2)
 在网站根目录创建一个logs文件夹。如果你开启了某些日志服务,日志文件将记录在这里。当然也可以不记录日志,但初次部署对排错有帮助,建议创建。

图片 2

    web.config 中开启 stdoutLogEnabled=”true”

<aspNetCore processPath="dotnet" arguments=".Web.dll" stdoutLogEnabled="true" stdoutLogFile=".logsstdout" />

3)  在IIS管理器中添加网站。步骤与一般网站配置一致:

图片 3

图片 4

4)
配置应用程序池。在左侧导航栏选择“应用程序池”,选择指定程序池,右键菜单,选择“基本设置”,将.Net
CLR版本设置为“无托管代码”。

图片 5

   
最近写了个定时邮件推送的服务,当利用lognet4记录日志时,发现日志并没有记录。后来明白windows
服务一般默认是在C:WindowsSystem
或是C:WindowsSystem32,而我们自己的服务程序一般是放在其他的目录,这样log4net.config文件中的配置路径将无法正确解析。所以就无法记录日志。本来我的lognet4文件与服务文件位于同一目录,后来我就把lognet4.config文件放在了程序exe所在的目录。

5.  安装.NET Core Windows Server Hosting程序集

安装.NET Core Windows Server
Hosting程序集,让IIS具备反向代理功能。该程序集包含了.Net
Core运行时(Runtime),.Net Core 类库(Library)和 Asp.Net Core
Module。其中Asp.Net Core Module负责反向代理工作。

特别注意,按微软官方说法,如果是脱机安装,则需先手动安装Microsoft Visual
C++ 2015
Redistributable。但实践证明即使在线安装很多时候也不会自动安装 Microsoft
Visual C++ 2015 Redistributable,因此强烈建议手动安装Microsoft Visual
C++ 2015 Redistributabl

另外,目前.NET Core版本升级很快,请下载最新版本的.NET Core Windows
Server Hosting,确保服务器上的.Net Core版本不低于部署的Asp.Net Core
App版本。

下载 Microsoft Visual C++ 2015
Redistributable

下载最新版本.NET Core Windows Server
Hosting

安装完成重启系统或重启IIS服务即可。

发表评论

电子邮件地址不会被公开。 必填项已用*标注