• iBATIS.NET 持久性框架,有时间完善它


    iBATIS.NET 持久性框架有时间完善它

    providers.config配置如下

    <?xml version="1.0" encoding="utf-8"?>
    <providers xmlns="http://ibatis.apache.org/providers"    
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <clear/>
      <provider
              name="sqlServer1.0"
              description="Microsoft SQL Server, provider V1.0.3300.0 in framework .NET V1.0"
              enabled="false"
              assemblyName="System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.SqlClient.SqlConnection"
              commandClass="System.Data.SqlClient.SqlCommand"
              parameterClass="System.Data.SqlClient.SqlParameter"
              parameterDbTypeClass="System.Data.SqlDbType"
              parameterDbTypeProperty="SqlDbType"
              dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
              commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder"
              usePositionalParameters="false"
              useParameterPrefixInSql="true"
              useParameterPrefixInParameter="true"
              parameterPrefix="@"
              allowMARS="false"
      />
      <provider
              name="sqlServer1.1"
              description="Microsoft SQL Server, provider V1.0.5000.0 in framework .NET V1.1"
              enabled="false"
              default="true"
              assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
              connectionClass="System.Data.SqlClient.SqlConnection"
              commandClass="System.Data.SqlClient.SqlCommand"
              parameterClass="System.Data.SqlClient.SqlParameter"
              parameterDbTypeClass="System.Data.SqlDbType"
              parameterDbTypeProperty="SqlDbType"
              dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
              commandBuilderClass="System.Data.SqlClient.SqlCommandBuilder"
              usePositionalParameters="false"
              useParameterPrefixInSql="true"
              useParameterPrefixInParameter="true"
              parameterPrefix="@"
              allowMARS="false"
      />
      <!--SqlServer 2.0 SQl-->
      <provider
            name="sqlServer2.0"
            enabled="false"
            description="Microsoft SQL Server, provider V2.0.0.0 in framework .NET V2.0"
            assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            connectionClass="System.Data.SqlClient.SqlConnection"
            commandClass="System.Data.SqlClient.SqlCommand"
            parameterClass="System.Data.SqlClient.SqlParameter"
            parameterDbTypeClass="System.Data.SqlDbType"
            parameterDbTypeProperty="SqlDbType"
            dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
            commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
            usePositionalParameters = "false"
            useParameterPrefixInSql = "true"
            useParameterPrefixInParameter = "true"
            parameterPrefix="@"
            allowMARS="false"
        />
      <provider
           name="sqlServer4.0"
           enabled="true"
           default="true"
           description="Microsoft SQL Server, provider V4.0.0.0 in framework .NET V4.0"
           assemblyName="System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
           connectionClass="System.Data.SqlClient.SqlConnection"
           commandClass="System.Data.SqlClient.SqlCommand"
           parameterClass="System.Data.SqlClient.SqlParameter"
           parameterDbTypeClass="System.Data.SqlDbType"
           parameterDbTypeProperty="SqlDbType"
           dataAdapterClass="System.Data.SqlClient.SqlDataAdapter"
           commandBuilderClass=" System.Data.SqlClient.SqlCommandBuilder"
           usePositionalParameters = "false"
           useParameterPrefixInSql = "true"
           useParameterPrefixInParameter = "true"
           parameterPrefix="@"
           allowMARS="true"
        />
      <provider name="OleDb1.1"
              description="OleDb, provider V1.0.5000.0 in framework .NET V1.1"
              enabled="false"
              assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
            connectionClass="System.Data.OleDb.OleDbConnection"
              commandClass="System.Data.OleDb.OleDbCommand"
              parameterClass="System.Data.OleDb.OleDbParameter"
              parameterDbTypeClass="System.Data.OleDb.OleDbType"
              parameterDbTypeProperty="OleDbType"
              dataAdapterClass="System.Data.OleDb.OleDbDataAdapter"
              commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder"
              usePositionalParameters="true"
              useParameterPrefixInSql="false"
              useParameterPrefixInParameter="false"
              parameterPrefix=""
            allowMARS="false"
        />
      <provider name="OleDb2.0"
          description="OleDb, provider V2.0.0.0 in framework .NET V2"
          enabled="true"
          assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          connectionClass="System.Data.OleDb.OleDbConnection"
          commandClass="System.Data.OleDb.OleDbCommand"
          parameterClass="System.Data.OleDb.OleDbParameter"
          parameterDbTypeClass="System.Data.OleDb.OleDbType"
          parameterDbTypeProperty="OleDbType"
          dataAdapterClass="System.Data.OleDb.OleDbDataAdapter"
          commandBuilderClass="System.Data.OleDb.OleDbCommandBuilder"
          usePositionalParameters="true"
          useParameterPrefixInSql="false"
          useParameterPrefixInParameter="false"
          parameterPrefix=""
          allowMARS="false"
        />
      <provider
          name="Odbc1.1"
          description="Odbc, provider V1.0.5000.0 in framework .NET V1.1"
          enabled="false"
          assemblyName="System.Data, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          connectionClass="System.Data.Odbc.OdbcConnection"
          commandClass="System.Data.Odbc.OdbcCommand"
          parameterClass="System.Data.Odbc.OdbcParameter"
          parameterDbTypeClass="System.Data.Odbc.OdbcType"
          parameterDbTypeProperty="OdbcType"
          dataAdapterClass="System.Data.Odbc.OdbcDataAdapter"
          commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder"
          usePositionalParameters="true"
          useParameterPrefixInSql="false"
          useParameterPrefixInParameter="false"
          parameterPrefix="@"
          allowMARS="false"
        />
      <!--ODBC 2.0 Support-->
      <provider
          name="Odbc2.0"
          description="Odbc, provider V2.0.0.0 in framework .NET V2"
          enabled="false"
          assemblyName="System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
          connectionClass="System.Data.Odbc.OdbcConnection"
          commandClass="System.Data.Odbc.OdbcCommand"
          parameterClass="System.Data.Odbc.OdbcParameter"
          parameterDbTypeClass="System.Data.Odbc.OdbcType"
          parameterDbTypeProperty="OdbcType"
          dataAdapterClass="System.Data.Odbc.OdbcDataAdapter"
          commandBuilderClass="System.Data.Odbc.OdbcCommandBuilder"
          usePositionalParameters="true"
          useParameterPrefixInSql="false"
          useParameterPrefixInParameter="false"
          parameterPrefix="@"
          allowMARS="false"
      />
    
      <provider
          name="oracle9.2"
          description="Oracle, Oracle provider V9.2.0.401"
          enabled="false"
          assemblyName="Oracle.DataAccess, Version=9.2.0.401, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
          commandClass="Oracle.DataAccess.Client.OracleCommand"
          parameterClass="Oracle.DataAccess.Client.OracleParameter"
          parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
          parameterDbTypeProperty="OracleDbType"
          dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
          commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
          usePositionalParameters="false"
          useParameterPrefixInSql="true"
          useParameterPrefixInParameter="false"
          parameterPrefix=":"
          useDeriveParameters="false"
          allowMARS="false"
      />
      <provider
          name="oracle10.1"
          description="Oracle, oracle provider V10.1.0.301"
          enabled="false"
          assemblyName="Oracle.DataAccess, Version=10.1.0.301, Culture=neutral, PublicKeyToken=89b483f429c47342" connectionClass="Oracle.DataAccess.Client.OracleConnection"
          commandClass="Oracle.DataAccess.Client.OracleCommand"
          parameterClass="Oracle.DataAccess.Client.OracleParameter"
          parameterDbTypeClass="Oracle.DataAccess.Client.OracleDbType"
          parameterDbTypeProperty="OracleDbType"
          dataAdapterClass="Oracle.DataAccess.Client.OracleDataAdapter"
          commandBuilderClass="Oracle.DataAccess.Client.OracleCommandBuilder"
          usePositionalParameters="true"
          useParameterPrefixInSql="true"
          useParameterPrefixInParameter="true"
          parameterPrefix=":"
          useDeriveParameters="false"
          allowMARS="false"
      />
     
      <!--Oracle Support-->
      <provider
          name="oracleClient1.0"
          description="Oracle, Microsoft provider V1.0.5000.0"
          enabled="false"
          assemblyName="System.Data.OracleClient, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" connectionClass="System.Data.OracleClient.OracleConnection"
          commandClass="System.Data.OracleClient.OracleCommand"
          parameterClass="System.Data.OracleClient.OracleParameter"
          parameterDbTypeClass="System.Data.OracleClient.OracleType"
          parameterDbTypeProperty="OracleType"
          dataAdapterClass="System.Data.OracleClient.OracleDataAdapter"
          commandBuilderClass="System.Data.OracleClient.OracleCommandBuilder"
          usePositionalParameters="false"
          useParameterPrefixInSql="true"
          useParameterPrefixInParameter="false"
          parameterPrefix=":"
          allowMARS="false"
      />
      <!--ByteFX Support-->
      <provider
          name="ByteFx"
          description="MySQL, ByteFx provider V0.7.6.15073"
          enabled="false"
          assemblyName="ByteFX.MySqlClient, Version=0.7.6.15073, Culture=neutral, PublicKeyToken=f2fef6fed1732fc1" connectionClass="ByteFX.Data.MySqlClient.MySqlConnection"
          commandClass="ByteFX.Data.MySqlClient.MySqlCommand"
          parameterClass="ByteFX.Data.MySqlClient.MySqlParameter"
          parameterDbTypeClass="ByteFX.Data.MySqlClient.MySqlDbType"
          parameterDbTypeProperty="MySqlDbType"
          dataAdapterClass="ByteFX.Data.MySqlClient.MySqlDataAdapter"
          commandBuilderClass="ByteFX.Data.MySqlClient.MySqlCommandBuilder"
          usePositionalParameters="false"
          useParameterPrefixInSql="true"
          useParameterPrefixInParameter="true"
          parameterPrefix="@"
          allowMARS="false"
      />
      <!--MySql Support-->
      <provider
          name="MySql"
          description="MySQL, MySQL provider 1.0.7.30072"
          enabled="false"
          assemblyName="MySql.Data, Version=1.0.7.30072, Culture=neutral, PublicKeyToken=c5687fc88969c44d" 
        connectionClass="MySql.Data.MySqlClient.MySqlConnection"
          commandClass="MySql.Data.MySqlClient.MySqlCommand"
          parameterClass="MySql.Data.MySqlClient.MySqlParameter"
          parameterDbTypeClass="MySql.Data.MySqlClient.MySqlDbType"
          parameterDbTypeProperty="MySqlDbType"
          dataAdapterClass="MySql.Data.MySqlClient.MySqlDataAdapter"
          commandBuilderClass="MySql.Data.MySqlClient.MySqlCommandBuilder"
          usePositionalParameters="false"
          useParameterPrefixInSql="true"
          useParameterPrefixInParameter="true"
          parameterPrefix="?"
          allowMARS="false"
      />
      <!--SQLite 3 Support-->
      <provider name="SQLite3"
          description="SQLite, SQLite.NET provider V1.0.66.0"
          enabled="false"
          assemblyName="System.Data.SQLite, Version=1.0.66.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"
          connectionClass="System.Data.SQLite.SQLiteConnection"  
        commandClass="System.Data.SQLite.SQLiteCommand"  
        parameterClass="System.Data.SQLite.SQLiteParameter"  
        parameterDbTypeClass="System.Data.SQLite.TypeAffinity"  
        parameterDbTypeProperty="DbType"  
        dataAdapterClass="System.Data.SQLite.SQLiteDataAdapter"  
        commandBuilderClass="System.Data.SQLite.SQLiteCommandBuilder"  
        usePositionalParameters="false"  
        useParameterPrefixInSql="true"  
        useParameterPrefixInParameter="true"  
        parameterPrefix="@"  
        setDbParameterPrecision="false"  
        setDbParameterScale="false"  
        allowMARS="false"  
      />
      <!--Firebird Support-->
      <provider
          name="Firebird1.7"
          description="Firebird, Firebird SQL .NET provider V1.7.0.33200"
          enabled="false"
          assemblyName="FirebirdSql.Data.Firebird, Version=1.7.0.33200, Culture=neutral, PublicKeyToken=fa843d180294369d" connectionClass="FirebirdSql.Data.Firebird.FbConnection"
          commandClass="FirebirdSql.Data.Firebird.FbCommand"
          parameterClass="FirebirdSql.Data.Firebird.FbParameter"
          parameterDbTypeClass="FirebirdSql.Data.Firebird.FbDbType"
          parameterDbTypeProperty="FbDbType"
          dataAdapterClass="FirebirdSql.Data.Firebird.FbDataAdapter"
          commandBuilderClass="FirebirdSql.Data.Firebird.FbCommandBuilder"
          usePositionalParameters="false"
          useParameterPrefixInSql="true"
          useParameterPrefixInParameter="true"
          parameterPrefix="@"
          allowMARS="false"
      />
      <!--PostgreSql Support-->
      <provider
          name="PostgreSql0.99.1.0"
          description="PostgreSql, Npgsql provider V0.99.1.0"
          enabled="false"
          assemblyName="Npgsql, Version=0.99.1.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
          connectionClass="Npgsql.NpgsqlConnection"
          commandClass="Npgsql.NpgsqlCommand"
          parameterClass="Npgsql.NpgsqlParameter"
          parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType"
          parameterDbTypeProperty="NpgsqlDbType"
          dataAdapterClass="Npgsql.NpgsqlDataAdapter"
          commandBuilderClass="Npgsql.NpgsqlCommandBuilder"
          usePositionalParameters="false"
          useParameterPrefixInSql="true"
          useParameterPrefixInParameter="true"
          parameterPrefix=":"
          allowMARS="true"
      />
      <!--PostgreSql 2.2.4.3-->
      <provider
       name="PostgreSql2.2.4.3"
       description="PostgreSql, Npgsql provider V2.2.4.3  .Net Data Provider for PostgreSQL"
       enabled="false"
       assemblyName="Npgsql, Version=2.2.4.3, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7"
       connectionClass="Npgsql.NpgsqlConnection"
       commandClass="Npgsql.NpgsqlCommand"
       parameterClass="Npgsql.NpgsqlParameter"
       parameterDbTypeClass="NpgsqlTypes.NpgsqlDbType"
       parameterDbTypeProperty="NpgsqlDbType"
       dataAdapterClass="Npgsql.NpgsqlDataAdapter"
       commandBuilderClass="Npgsql.NpgsqlCommandBuilder"
       usePositionalParameters="false"
       useParameterPrefixInSql="true"
       useParameterPrefixInParameter="true"
       parameterPrefix=":"
       allowMARS="true"
      />
      <!--DB2 Support-->
      <provider
          name="iDb2.10"
          description="IBM DB2 Provider, V 10.0"
          enabled="false"
          assemblyName="IBM.Data.DB2.iSeries, Version=10.0.0.0,Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26, Custom=null" connectionClass="IBM.Data.DB2.iSeries.iDB2Connection"
          commandClass="IBM.Data.DB2.iSeries.iDB2Command"
          parameterClass="IBM.Data.DB2.iSeries.iDB2Parameter"
          parameterDbTypeClass="IBM.Data.DB2.iSeries.iDB2DbType"
          parameterDbTypeProperty="iDB2DbType"
          dataAdapterClass="IBM.Data.DB2.iSeries.iDB2DataAdapter"
          commandBuilderClass="IBM.Data.DB2.iSeries.iDB2CommandBuilder"
          usePositionalParameters="true"
          useParameterPrefixInSql="false"
          useParameterPrefixInParameter="false"
          parameterPrefix=""
          allowMARS="false"
      />
      <provider
          name="Informix"
          description="Informix NET Provider, 2.81.0.0"
          enabled="false"
          assemblyName="IBM.Data.Informix, Version=2.81.0.0, Culture=neutral, PublicKeyToken=7c307b91aa13d208"
          connectionClass="IBM.Data.Informix.IfxConnection"
          commandClass="IBM.Data.Informix.IfxCommand"
          parameterClass="IBM.Data.Informix.IfxParameter"
          parameterDbTypeClass="IBM.Data.Informix.IfxType"
          parameterDbTypeProperty="IfxType"
          dataAdapterClass="IBM.Data.Informix.IfxDataAdapter"
          commandBuilderClass="IBM.Data.Informix.IfxCommandBuilder"
          usePositionalParameters = "true"
          useParameterPrefixInSql = "false"
          useParameterPrefixInParameter = "false"
          useDeriveParameters="false"
          allowMARS="false"
        />
      <provider
        name="ODP.NET Managed"
        description="Oracle, ODP.NET Managed 4.121.1.0"
        enabled="true"
        assemblyName="Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342"
        connectionClass="Oracle.ManagedDataAccess.Client.OracleConnection"
        commandClass="Oracle.ManagedDataAccess.Client.OracleCommand"
        parameterClass="Oracle.ManagedDataAccess.Client.OracleParameter"
        parameterDbTypeClass="Oracle.ManagedDataAccess.Client.OracleDbType"
        parameterDbTypeProperty="OracleDbType"
        dataAdapterClass="Oracle.ManagedDataAccess.Client.OracleDataAdapter"
        commandBuilderClass="Oracle.ManagedDataAccess.Client.OracleCommandBuilder"
        usePositionalParameters="true"
        useParameterPrefixInSql="true"
        useParameterPrefixInParameter="true"
        parameterPrefix=":"
        useDeriveParameters="false"
        allowMARS="false"
    />
    </providers>

    Ibatis与log4net一起配置

    Web.config

    <?xml version="1.0"?>
    <!--
      有关如何配置 ASP.NET 应用程序的详细信息,请访问
      http://go.microsoft.com/fwlink/?LinkId=169433
      -->
    <configuration>
      <configSections>
        <sectionGroup name="iBATIS">
          <section name="logging" type="MyBatis.Common.Logging.ConfigurationSectionHandler,MyBatis.Common"/>
        </sectionGroup>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
      </configSections>
      <appSettings>
        <add key="lo4net.Internal.Debug" value="true"/>
        <add key="ConnectionType" value="Oracle"/>
      </appSettings>
      <connectionStrings>
       
        <add name="SQLSERVER" connectionString="Data Source=10.16.30.40;Initial Catalog=HIS_guye;Persist Security Info=True;User ID=sa;Password=mtkj123!;Max Pool Size=100; Min Pool Size=1;"/>
        <add name="Oracle" connectionString="Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.16.30.30)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=mtemr)));Persist Security Info=True;User ID=MTHOSPITALGUYE;Password=mtkj;"/>
      </connectionStrings>
     
    
      <!--<system.diagnostics>
        <trace autoflush="true">
          <listeners>
            <add name="textWriterTraceListener" type="System.Diagnostics.TextWriterTraceListener"
                 initializeData="Logslog4net.txt"/>
          </listeners>
        </trace>
      </system.diagnostics>-->
      <iBATIS>
        <!--inline :log4net 节点在App.Config/Web.Config 文件中配置
            file:使用外置配置文件 (需要configFile参数配合使用,<arg key="configFile" value="外部配置文件")
            file-watch: 与"file"一样,只是多了一个监视外部配置文件的变动功能,如果有变动则重新加载配置。
            external:IBatis将不会尝试配置Log4Net。-->
        <logging>
          <logFactoryAdapter type="MyBatis.Common.Logging.Log4Net.Log4NetLoggerFA, MyBatis.Common.Logging.Log4Net">
            <!--<arg key="configType" value="inline"/>-->
            <arg key="configType" value="inline"/>
            <arg key="configFile" value="log4net.config"/>
            <arg key="showLogName" value="true"/>
            <arg key="showDataTime" value="true"/>
            <arg key="level" value="ALL"/>
            <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:SSS"/>
          </logFactoryAdapter>
        </logging>
      </iBATIS>
      <log4net>
        <!-- 这个日志是系统其他地方写日志时候用到的设置 -->
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <!--<file value="./LogsLog_" />
          <appendToFile value="true" />
          <rollingStyle value="Date" />
          <datePattern value="yyyyMMdd'.txt'" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <header value="&#xD;&#xA;" />
            <ConversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline%newline%newline" />
          </layout>-->
          <file value="./Logs"/>
          <param name="AppendToFile" value="true"/>
          <!--日志最大个数,都是最新的-->
          <!--rollingStyle节点为Date时,该节点不起作用-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composite时,每天有value个日志-->
          <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
          <param name="MaxSizeRollBackups" value="100"/>
          <!--防止多线程时不能写Log,官方说线程非安全-->
          <!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
          <!-- 每个文件的大小限制  -->
          <param name="MaximumFileSize" value="10MB"/>
          <!--可以为:Once|Size|Date|Composite-->
          <!--Composite为Size和Date的组合-->
          <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
          <param name="RollingStyle" value="Composite"/>
          <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;"/>
          <param name="StaticLogFileName" value="false"/>
          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="Header" value="&#xA;----------------------application startup--------------------------&#xA;"/>
            <param name="Footer" value="&#xA; ----------------------application shutdown--------------------------&#xA;"/>
            <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line)  %m%n"/>
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ALL"/>
            <param name="LevelMax" value="OFF"/>
          </filter>
        </appender>
        <root>
          <level value="All"/>
          <appender-ref ref="RollingLogFileAppender"/>
        </root>
        <!-- IBatisLogFile的日志 -->
        <appender name="IBatisLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatis_"/>
          <appendToFile value="true"/>
          <datePattern value="yyyy-MM-dd'.txt'"/>
          <rollingStyle value="Date"/>
          <staticLogFileName value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <header value="[Header]&#xA;"/>
            <footer value="[Footer]&#xA;"/>
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception"/>
          </layout>
        </appender>
        <!-- IBatisMapperLogFile的日志 -->
        <appender name="IBatisMapperLogFile" type="log4net.Appender.RollingFileAppender">
          <!--<file value="./LogsiBatisMapper_" />
          <appendToFile value="true" />
          <datePattern value="yyyy-MM-dd'.txt'" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />-->
          <file value="./Logs"/>
          <param name="AppendToFile" value="true"/>
          <!--日志最大个数,都是最新的-->
          <!--rollingStyle节点为Date时,该节点不起作用-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composite时,每天有value个日志-->
          <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
          <param name="MaxSizeRollBackups" value="50"/>
          <!--防止多线程时不能写Log,官方说线程非安全-->
          <!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
          <!-- 每个文件的大小限制  -->
          <param name="MaximumFileSize" value="10MB"/>
          <!--可以为:Once|Size|Date|Composite-->
          <!--Composite为Size和Date的组合-->
          <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
          <param name="RollingStyle" value="Composite"/>
          <param name="DatePattern" value="&quot;iBatisMapper_&quot;yyyyMMdd&quot;.txt&quot;"/>
          <param name="StaticLogFileName" value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception"/>
          </layout>
        </appender>
        <!-- IBatisCacheLogFile的日志 -->
        <appender name="IBatisCacheLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatisChache_"/>
          <appendToFile value="true"/>
          <datePattern value="yyyy-MM-dd'.txt'"/>
          <rollingStyle value="Date"/>
          <staticLogFileName value="false"/>
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception"/>
          </layout>
        </appender>
        <!-- 注意一定要加additivity="false",因为异常日志是往上传递的,如果不加这个属性,在系统的总日志里面也会有IBatisNet的日志,这样就重复记录了 -->
        <logger name="MyBatis" additivity="false">
          <level value="All"/>
          <!--如果想增加日志输出目的地,增加<appender-ref>节点就是了,注意后面的ref是在config中配置的appender name-->
          <appender-ref ref="IBatisLogFile"/>
        </logger>
        <!-- 注意一定要加additivity="false",因为异常日志是往上传递的,如果不加这个属性,在系统的总日志里面,以及IBatisNet里的日志里,也会有IBatisNet.DataMapper的日志,这样就重复记录了 -->
        <!--<logger name="IBatisNet.DataMapper" >
          <level value="ALL"/>
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>-->
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="MyBatis.DataMapper" additivity="false">
          <level value="DEBUG"/>
          <appender-ref ref="IBatisMapperLogFile"/>
        </logger>
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="MyBatis.DataMapper.Model.Cache.CacheModel" additivity="false">
          <appender-ref ref="IBatisCacheLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <!--<logger name="MyBatis.DataMapper.Model.Statements.PreparedStatementFactory"  additivity="false">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>-->
        <logger name="MyBatis.DataMapper.DefaultMapperFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Proxy.LazyListGenericFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Proxy.LazyLoadProxyFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Session.Transaction.Ado.AdoTransactionFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Session.Stores.SessionStoreFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <logger name="MyBatis.DataMapper.Session.DefaultSessionFactory">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <!--<logger name="MyBatis.DataMapper.Model.DefaultModelStore">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>-->
        <logger name="MyBatis.DataMapper.DataMapper">
          <appender-ref ref="IBatisMapperLogFile"/>
          <level value="DEBUG"/>
        </logger>
        <!--<logger name="MyBatis.DataMapper.Data.PreparedCommandFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.DataExchange.DataExchangeFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Session.Stores.SessionStoreFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>-->
        <!--<logger name="IBatisNet.DataMapper.Configuration.Cache.CacheModel">
          <level value="ALL" />
          <appender-ref ref="IBatisCacheLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.LazyLoadList">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataAccess.DaoSession">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.SqlMapSession">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.Common.Transaction.TransactionScope">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataAccess.Configuration.DaoProxy">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>-->
      </log4net>
      <!--
        有关 web.config 更改的说明,请参见 http://go.microsoft.com/fwlink/?LinkId=235367。
    
        可在 <httpRuntime> 标记上设置以下特性。
          <system.Web>
            <httpRuntime targetFramework="4.5" />
          </system.Web>
      -->
      <system.web>
        <webServices>
          <protocols>
            <add name="HttpSoap"/>
            <add name="HttpPost"/>
            <add name="HttpGet"/>
            <add name="Documentation"/>
          </protocols>
        </webServices>
        <compilation debug="true" targetFramework="4.5"/>
        <httpRuntime maxRequestLength="2097151" maxQueryStringLength="2097151" useFullyQualifiedRedirectUrl="true" executionTimeout="200"/>
        <pages controlRenderingCompatibilityVersion="4.0"/>
      </system.web>
      <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
          <dependentAssembly>
            <assemblyIdentity name="Autofac" publicKeyToken="17863af14b0044da" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-3.5.0.0" newVersion="3.5.0.0"/>
          </dependentAssembly>
          <dependentAssembly>
            <assemblyIdentity name="log4net" publicKeyToken="669e0ddf0bb1aa2a" culture="neutral"/>
            <bindingRedirect oldVersion="0.0.0.0-1.2.15.0" newVersion="1.2.15.0"/>
          </dependentAssembly>
        </assemblyBinding>
      </runtime>
      <system.serviceModel>
        <protocolMapping>
          <remove scheme="http"/>
          <remove scheme="net.tcp"/>
          <add scheme="http" binding="wsHttpBinding" bindingConfiguration="emrwsHttpBinding"/>
          <add scheme="http" binding="basicHttpBinding" bindingConfiguration="emrbasicHttpBinding"/>
          <add scheme="net.tcp" binding="netTcpContextBinding" bindingConfiguration="emrnetcpContextBinding"/>
          <add scheme="https" binding="wsHttpContextBinding" bindingConfiguration="emrWsHttpContextBinding"/>
        </protocolMapping>
        <bindings>
          <wsHttpBinding>
            <binding name="emrwsHttpBinding" closeTimeout="00:01:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" allowCookies="true">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
              <security mode="None">
                <transport clientCredentialType="None"/>
                <message clientCredentialType="Certificate"/>
              </security>
            </binding>
          </wsHttpBinding>
          <basicHttpBinding>
            <binding name="emrbasicHttpBinding" closeTimeout="00:01:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Mtom" allowCookies="true">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
              <security mode="None">
                <transport clientCredentialType="None"/>
                <message clientCredentialType="Certificate"/>
              </security>
            </binding>
          </basicHttpBinding>
          <!--<wsHttpContextBinding>
            <binding name="ExaWsHttpContextBinding" closeTimeout="00:01:00"
              openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:10:00"
              maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
              messageEncoding="Mtom" allowCookies="true">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647"
                maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
              <reliableSession inactivityTimeout="00:20:00" enabled="true" />
              <security mode="None">
                <transport clientCredentialType="None" />
                <message clientCredentialType="Certificate" />
              </security>
            </binding>
          </wsHttpContextBinding>-->
          <netTcpContextBinding>
            <binding name="emrnetcpContextBinding" transactionFlow="true" closeTimeout="00:01:00" openTimeout="00:20:00" receiveTimeout="00:20:00" sendTimeout="00:10:00" maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="500" maxReceivedMessageSize="2147483647">
              <readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647"/>
              <reliableSession enabled="true" ordered="true" inactivityTimeout="00:20:00"/>
              <security mode="None">
                <message clientCredentialType="Certificate"/>
              </security>
            </binding>
          </netTcpContextBinding>
        </bindings>
        <services>
          <service behaviorConfiguration="behavior_1" name="MT.Hospital.WebService.EmrService">
            <clear/>
            <endpoint address="mex" binding="mexHttpBinding" name="MexBehavior" contract="IMetadataExchange"/>
            <endpoint address="" binding="wsHttpBinding" bindingConfiguration="emrwsHttpBinding" name="emrwsHttpBinding" contract="MT.Hospital.WebService.IEmrService">
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
            <endpoint address="EmrApi" binding="basicHttpBinding" bindingConfiguration="emrbasicHttpBinding" name="emrbasicHttpBinding" contract="MT.Hospital.WebService.IEmrService">
              <identity>
                <dns value="localhost"/>
              </identity>
            </endpoint>
            <endpoint address="net.tcp" binding="netTcpContextBinding" bindingConfiguration="emrnetcpContextBinding" name="emrnetcpContextBinding" contract="MT.Hospital.WebService.IEmrService"/>
            <host>
              <baseAddresses>
                <add baseAddress="http://localhost:8099/EmrApi"/>
                <add baseAddress="net.tcp://localhost:50001"/>
              </baseAddresses>
              <timeouts closeTimeout="00:01:00" openTimeout="00:20:00"/>
            </host>
          </service>
          <service behaviorConfiguration="behavior_1" name="MT.Hospital.WebService.NetTcp.EmrService">
            <clear/>
            <endpoint address="mex" binding="mexHttpBinding" name="MexBehavior" contract="IMetadataExchange"/>
            <endpoint address="net.tcp" binding="netTcpContextBinding" bindingConfiguration="emrnetcpContextBinding" name="emrnetcpContextBinding" contract="MT.Hospital.WebService.NetTcp.IEmrService"/>
            <host>
              <baseAddresses>
                <add baseAddress="net.tcp://localhost:50001/Service"/>
                <add baseAddress="http://localhost:8099/"/>
              </baseAddresses>
              <timeouts closeTimeout="00:01:00" openTimeout="00:20:00"/>
            </host>
          </service>
        </services>
        <behaviors>
          <serviceBehaviors>
            <behavior name="behavior_1">
              <serviceThrottling maxConcurrentCalls="500" maxConcurrentSessions="500" maxConcurrentInstances="500"/>
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="false"/>
              <serviceTimeouts transactionTimeout="00:20:00"/>
              <dataContractSerializer maxItemsInObjectGraph="65536000"/>
            </behavior>
            <behavior name="">
              <serviceMetadata httpGetEnabled="true"/>
              <serviceDebug includeExceptionDetailInFaults="true"/>
            </behavior>
          </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment aspNetCompatibilityEnabled="false" multipleSiteBindingsEnabled="true"/>
      </system.serviceModel>
      <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
      </system.webServer>
    </configuration>

    log4net.config

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
        <sectionGroup name="iBATIS">
          <section name="logging" type="MyBatis.Common.Logging.ConfigurationSectionHandler,MyBatis.Common" />
        </sectionGroup>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
      </configSections>
      <appSettings>
        <add key="log4net.Internal.Debug" value="true"/>
      </appSettings>
      
      <iBATIS>
        <logging>
          <logFactoryAdapter type="MyBatis.Common.Logging.Log4Net.Log4NetLoggerFA, MyBatis.Common.Logging.Log4Net">
            <arg key="configType" value="inline" />
            <arg key="showLogName" value="true" />
            <arg key="showDateTime" value="true" />
            <arg key="level" value="All" />
            <arg key="dateTimeFormat" value="yyyy/MM/dd HH:mm:ss:SSS" />
          </logFactoryAdapter>
        </logging>
      </iBATIS>
      <!--每个<appender>子节点代表一种记录日志的方式-->
      <log4net>
        <!-- 这个日志是系统其他地方写日志时候用到的设置 -->
        <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
          <file value="./Logs" />
          <param name="AppendToFile" value="true" />
          <!--日志最大个数,都是最新的-->
          <!--rollingStyle节点为Date时,该节点不起作用-->
          <!--rollingStyle节点为Size时,只能有value个日志-->
          <!--rollingStyle节点为Composite时,每天有value个日志-->
          <!-- 切割最多文件数 -1表示不限制产生日志文件数-->
          <param name="MaxSizeRollBackups" value="100"/>
          <!--防止多线程时不能写Log,官方说线程非安全-->
          <!--实际使用时,本地测试正常,部署后有不能写日志的情况-->
          <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
          <!-- 每个文件的大小限制  -->
          <param name="MaximumFileSize" value="10MB"/>
          <!--可以为:Once|Size|Date|Composite-->
          <!--Composite为Size和Date的组合-->
          <!-- RollingStyle Composite 综合  Size 按大小  Date 按时间 -->
          <param name="RollingStyle" value="Composite" />
          <param name="DatePattern" value="&quot;Logs_&quot;yyyyMMdd&quot;.txt&quot;" />
          <param name="StaticLogFileName" value="false" />
          <layout type="log4net.Layout.PatternLayout,log4net">
            <param name="Header" value="&#xD;&#xA;----------------------application startup--------------------------&#xD;&#xA;" />
            <param name="Footer" value="&#xD;&#xA; ----------------------application shutdown--------------------------&#xD;&#xA;" />
            <param name="ConversionPattern" value="%d [%t] %-5p %c - (%line)  %m%n" />
          </layout>
          <filter type="log4net.Filter.LevelRangeFilter">
            <param name="LevelMin" value="ALL" />
            <param name="LevelMax" value="OFF" />
          </filter>
        </appender>
        <root>
          <level value="All" />
          <appender-ref ref="RollingLogFileAppender" />
        </root>
    
        <!-- IBatisLogFile的日志 -->
    
        <appender name="IBatisLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatis_" />
          <appendToFile value="true" />
          <datePattern value="yyyy-MM-dd'.txt'" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <header value="[Header]&#13;&#10;" />
            <footer value="[Footer]&#13;&#10;" />
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
          </layout>
        </appender>
    
        <!-- IBatisMapperLogFile的日志 -->
    
        <appender name="IBatisMapperLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatisMapper_" />
          <appendToFile value="true" />
          <datePattern value="yyyy-MM-dd'.txt'" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
          </layout>
        </appender>
    
        <!-- IBatisCacheLogFile的日志 -->
    
        <appender name="IBatisCacheLogFile" type="log4net.Appender.RollingFileAppender">
          <file value="./LogsiBatisChache_" />
          <appendToFile value="true" />
          <datePattern value="yyyy-MM-dd'.txt'" />
          <rollingStyle value="Date" />
          <staticLogFileName value="false" />
          <layout type="log4net.Layout.PatternLayout">
            <conversionPattern value="%date{dd/MM/yyyy-HH:mm:ss} %m%newline%exception" />
          </layout>
        </appender>
    
    
    
        <!-- 注意一定要加additivity="false",因为异常日志是往上传递的,如果不加这个属性,在系统的总日志里面也会有IBatisNet的日志,这样就重复记录了 -->
        <logger name="MyBatis" additivity="false">
          <level value="All"/>
    
          <!--如果想增加日志输出目的地,增加<appender-ref>节点就是了,注意后面的ref是在config中配置的appender name-->
          <appender-ref ref="IBatisLogFile" />
        </logger>
    
        <!-- 注意一定要加additivity="false",因为异常日志是往上传递的,如果不加这个属性,在系统的总日志里面,以及IBatisNet里的日志里,也会有IBatisNet.DataMapper的日志,这样就重复记录了 -->
    
        <!--<logger name="IBatisNet.DataMapper" >
          <level value="ALL"/>
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>-->
    
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="MyBatis.DataMapper" >
          <level value="DEBUG"/>
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
    
        <!-- Print only messages of level DEBUG or above in the packages -->
        <logger name="MyBatis.DataMapper.Model.Cache.CacheModel">
          <appender-ref ref="IBatisCacheLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Model.Statements.PreparedStatementFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.DefaultMapperFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Proxy.LazyListGenericFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Session.Transaction.Ado.AdoTransactionFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Session.Stores.SessionStoreFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Session.DefaultSessionFactory">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.Model.DefaultModelStore">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.DataMapper">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <logger name="MyBatis.DataMapper.DataMapper">
          <appender-ref ref="IBatisMapperLogFile" />
          <level value="DEBUG" />
        </logger>
        <!--<logger name="IBatisNet.DataMapper.Configuration.Cache.CacheModel">
          <level value="ALL" />
          <appender-ref ref="IBatisCacheLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.Configuration.Statements.PreparedStatementFactory">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.LazyLoadList">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataAccess.DaoSession">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataMapper.SqlMapSession">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.Common.Transaction.TransactionScope">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>
        <logger name="IBatisNet.DataAccess.Configuration.DaoProxy">
          <level value="ALL" />
          <appender-ref ref="IBatisMapperLogFile" />
        </logger>-->
      </log4net>
    </configuration>
  • 相关阅读:
    Git本地操作2
    Blast在windows下的使用过程
    和为T
    出现次数最多的整数
    蓝桥杯 未名湖边的烦恼 java
    蓝桥杯数字三角形 java
    ①①将线性拉伸
    ⑩把线型对象转平面对象
    ⑨矩形
    ⑧建立样条:(样条也能够被拉伸)
  • 原文地址:https://www.cnblogs.com/wangyinlon/p/10907093.html
Copyright © 2020-2023  润新知