Log4net入门(回滚日志文件篇)

  在上一篇Log4net(日志文件篇)中,我们使用“log4net.Appender.FileAppender”将日志信息输出到一个单一的文件中,随着应用程序的持续使用,该日志文件会越来越庞大,进而影响系统的性能。因此,有必要对日志文件按某种条件进行切分,要切分日志文件,我们可以使用“log4net.Appender.RollingFileAppender”输出源,使用该输出源我们可以按照文件大小或者日期对日志文件进行切分,下面我们分别描述之。

一、按文件大小切分日志文件

  想要按文件大小切分日志文件只需要在Log4net.config配置文件中添加一个appender节点,然后在root节点中添加一个对新添加的appender节点的引用即可。Log4net.config的配置信息如下所示:

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <configuration>
 3   <configSections>
 4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 5   </configSections>
 6
 7   <log4net>
 8     <!-- 将日志输出到控制台 -->
 9     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
10       <layout type="log4net.Layout.PatternLayout">
11         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
12       </layout>
13     </appender>
14
15     <!-- 将日志写到文件中 -->
16     <appender name="FileAppender" type="log4net.Appender.FileAppender">
17       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径-->
18       <file value="Logs/FileAppender.log" />
19       <!-- 将日志信息追加到已有的日志文件中-->
20       <appendToFile value="true" />
21       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
22       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
23
24       <layout type="log4net.Layout.PatternLayout">
25         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
26       </layout>
27     </appender>
28
29     <!-- 将日志以回滚文件的形式写到文件中 -->
30     <!-- 按文件大小切分日志文件 -->
31     <appender name="RollingFileAppenderBySize" type="log4net.Appender.RollingFileAppender">
32       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径-->
33       <file value="Logs/RollingFileAppenderBySize.log" />
34       <!-- 将日志信息追加到已有的日志文件中-->
35       <appendToFile value="true" />
36       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
37       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
38       <!-- 指定按文件大小切分日志文件 -->
39       <rollingStyle value="Size" />
40       <!-- 指定备份日志文件的最大切分数量,如果超过指定切分文件个数,日志将进行覆写 -->
41       <maxSizeRollBackups value="5" />
42       <!-- 指定每个切分日志文件的大小 -->
43       <maximumFileSize value="1KB" />
44       <!-- 指定每个切分文件具有相同的名字 -->
45       <!-- 日志文件进行切分后,每个日志文件的名字分别为:RollingFileAppenderBySize.log, RollingFileAppenderBySize.log.1, ..., RollingFileAppenderBySize.log.5 -->
46       <staticLogFileName value="true" />
47
48       <layout type="log4net.Layout.PatternLayout">
49         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
50       </layout>
51     </appender>
52
53     <root>
54       <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
55       <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 -->
56       <!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
57       <level value="ALL" />
58       <!-- 将日志输出到控制台 -->
59       <appender-ref ref="ConsoleAppender" />
60       <!-- 将日志写到文件中 -->
61       <appender-ref ref="FileAppender" />
62       <!-- 按文件大小切分日志文件 -->
63       <appender-ref ref="RollingFileAppenderBySize" />
64     </root>
65   </log4net>
66 </configuration>

  将上述配置文件保存,然后多次运行程序,生成的日志文件如下所示:

  大家可能已经注意到了,一共有6个日志文件,其中有5个是备份文件,也就是说,如果我们设置“<maxSizeRollBackups value="5" />”,那么意思是我们将备份文件的数量设置为5。

二、按日期切分日志文件

  想要按日期切分日志文件只需要在Log4net.config配置文件中添加一个appender节点,然后在root节点中添加一个对新添加的appender节点的引用即可。Log4net.config的配置信息如下所示:

 1 <?xml version="1.0" encoding="utf-8" ?>
 2 <configuration>
 3   <configSections>
 4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
 5   </configSections>
 6
 7   <log4net>
 8     <!-- 将日志输出到控制台 -->
 9     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
10       <layout type="log4net.Layout.PatternLayout">
11         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
12       </layout>
13     </appender>
14
15     <!-- 将日志写到文件中 -->
16     <appender name="FileAppender" type="log4net.Appender.FileAppender">
17       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径-->
18       <file value="Logs/FileAppender.log" />
19       <!-- 将日志信息追加到已有的日志文件中-->
20       <appendToFile value="true" />
21       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
22       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
23
24       <layout type="log4net.Layout.PatternLayout">
25         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
26       </layout>
27     </appender>
28
29     <!-- 将日志以回滚文件的形式写到文件中 -->
30     <!-- 按文件大小切分日志文件 -->
31     <appender name="RollingFileAppenderBySize" type="log4net.Appender.RollingFileAppender">
32       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径-->
33       <file value="Logs/RollingFileAppenderBySize.log" />
34       <!-- 将日志信息追加到已有的日志文件中-->
35       <appendToFile value="true" />
36       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
37       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
38       <!-- 指定按文件大小切分日志文件 -->
39       <rollingStyle value="Size" />
40       <!-- 指定备份日志文件的最大切分数量,如果超过指定切分文件个数,日志将进行覆写 -->
41       <maxSizeRollBackups value="5" />
42       <!-- 指定每个切分日志文件的大小 -->
43       <maximumFileSize value="1KB" />
44       <!-- 指定每个切分文件具有相同的名字 -->
45       <!-- 日志文件进行切分后,每个日志文件的名字分别为:RollingFileAppenderBySize.log, RollingFileAppenderBySize.log.1, ..., RollingFileAppenderBySize.log.5 -->
46       <staticLogFileName value="true" />
47
48       <layout type="log4net.Layout.PatternLayout">
49         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
50       </layout>
51     </appender>
52
53     <!-- 按日期切分日志文件 -->
54     <appender name="RollingFileAppenderByDate" type="log4net.Appender.RollingFileAppender">
55       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径-->
56       <file value="Logs/RollingFileAppenderByDate.log" />
57       <!-- 将日志信息追加到已有的日志文件中-->
58       <appendToFile value="true" />
59       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
60       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
61       <!-- 指定按日期切分日志文件 -->
62       <rollingStyle value="Date" />
63       <!-- 每分钟切分一个日志文件 -->
64       <!-- 每天切分一个日志文件的写法为:"yyyyMMdd" -->
65       <datePattern value="yyyyMMdd-HHmm" />
66       <!-- 指定每个切分文件具有相同的名字 -->
67       <staticLogFileName value="true" />
68
69       <layout type="log4net.Layout.PatternLayout">
70         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
71       </layout>
72     </appender>
73
74     <root>
75       <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
76       <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 -->
77       <!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
78       <level value="ALL" />
79       <!-- 将日志输出到控制台 -->
80       <appender-ref ref="ConsoleAppender" />
81       <!-- 将日志写到文件中 -->
82       <appender-ref ref="FileAppender" />
83       <!-- 按文件大小切分日志文件 -->
84       <appender-ref ref="RollingFileAppenderBySize" />
85       <!-- 按日期切分日志文件 -->
86       <appender-ref ref="RollingFileAppenderByDate" />
87     </root>
88   </log4net>
89 </configuration>

  每隔一分钟运行一次应用程序,生成的日志文件如下所示:

 三、按日期切分日志文件,并以日期作为日志文件名

  如果我们想以日期切分日志文件,并且以日期作为日志文件名,我们可以在Log4net.config配置文件中添加一个appender节点,然后在root节点中添加一个对新添加的appender节点的引用即可。Log4net.config的配置信息如下所示:

  1 <?xml version="1.0" encoding="utf-8" ?>
  2 <configuration>
  3   <configSections>
  4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  5   </configSections>
  6
  7   <log4net>
  8     <!-- 将日志输出到控制台 -->
  9     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
 10       <layout type="log4net.Layout.PatternLayout">
 11         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 12       </layout>
 13     </appender>
 14
 15     <!-- 将日志写到文件中 -->
 16     <appender name="FileAppender" type="log4net.Appender.FileAppender">
 17       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径-->
 18       <file value="Logs/FileAppender.log" />
 19       <!-- 将日志信息追加到已有的日志文件中-->
 20       <appendToFile value="true" />
 21       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
 22       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 23
 24       <layout type="log4net.Layout.PatternLayout">
 25         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 26       </layout>
 27     </appender>
 28
 29     <!-- 将日志以回滚文件的形式写到文件中 -->
 30     <!-- 按文件大小切分日志文件 -->
 31     <appender name="RollingFileAppenderBySize" type="log4net.Appender.RollingFileAppender">
 32       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径-->
 33       <file value="Logs/RollingFileAppenderBySize.log" />
 34       <!-- 将日志信息追加到已有的日志文件中-->
 35       <appendToFile value="true" />
 36       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
 37       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 38       <!-- 指定按文件大小切分日志文件 -->
 39       <rollingStyle value="Size" />
 40       <!-- 指定备份日志文件的最大切分数量,如果超过指定切分文件个数,日志将进行覆写 -->
 41       <maxSizeRollBackups value="5" />
 42       <!-- 指定每个切分日志文件的大小 -->
 43       <maximumFileSize value="1KB" />
 44       <!-- 指定每个切分文件具有相同的名字 -->
 45       <!-- 日志文件进行切分后,每个日志文件的名字分别为:RollingFileAppenderBySize.log, RollingFileAppenderBySize.log.1, ..., RollingFileAppenderBySize.log.5 -->
 46       <staticLogFileName value="true" />
 47
 48
 49       <layout type="log4net.Layout.PatternLayout">
 50         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 51       </layout>
 52     </appender>
 53
 54     <!-- 按日期切分日志文件 -->
 55     <appender name="RollingFileAppenderByDate" type="log4net.Appender.RollingFileAppender">
 56       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
 57       <file value="Logs/RollingFileAppenderByDate.log" />
 58       <!-- 将日志信息追加到已有的日志文件中-->
 59       <appendToFile value="true" />
 60       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
 61       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 62       <!-- 指定按日期切分日志文件 -->
 63       <rollingStyle value="Date" />
 64       <!-- 每分钟切分一个日志文件 -->
 65       <!-- 每天切分一个日志文件的写法为:"yyyyMMdd" -->
 66       <datePattern value="yyyyMMdd-HHmm" />
 67       <!-- 指定每个切分文件具有相同的名字 -->
 68       <staticLogFileName value="true" />
 69
 70       <layout type="log4net.Layout.PatternLayout">
 71         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 72       </layout>
 73     </appender>
 74
 75     <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
 76     <appender name="RollingFileAppenderNameByDate" type="log4net.Appender.RollingFileAppender">
 77       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
 78       <file value="Logs/" />
 79       <!-- 将日志信息追加到已有的日志文件中-->
 80       <appendToFile value="true" />
 81       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
 82       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 83       <!-- 指定按日期切分日志文件 -->
 84       <rollingStyle value="Date" />
 85       <!-- 日志文件的命名规则 -->
 86       <datePattern value="&quot;Logs_&quot;yyyyMMdd-HHmm&quot;.log&quot;" />
 87       <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
 88       <staticLogFileName value="false" />
 89
 90       <layout type="log4net.Layout.PatternLayout">
 91         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 92       </layout>
 93     </appender>
 94
 95     <root>
 96       <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
 97       <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 -->
 98       <!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
 99       <level value="ALL" />
100       <!-- 将日志输出到控制台 -->
101       <appender-ref ref="ConsoleAppender" />
102       <!-- 将日志写到文件中 -->
103       <appender-ref ref="FileAppender" />
104       <!-- 按文件大小切分日志文件 -->
105       <appender-ref ref="RollingFileAppenderBySize" />
106       <!-- 按日期切分日志文件 -->
107       <appender-ref ref="RollingFileAppenderByDate" />
108       <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
109       <appender-ref ref="RollingFileAppenderNameByDate" />
110     </root>
111   </log4net>
112 </configuration>

  多次运行应用程序,生成的日志如下所示:

四、既按大小又按日期切分日志文件

  如果想既按大小又按日期切分日志文件,只需要将“rollingStyle”的值设置为“Composite”即可,具体配置文件如下所示:

  1 <?xml version="1.0" encoding="utf-8" ?>
  2 <configuration>
  3   <configSections>
  4     <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  5   </configSections>
  6
  7   <log4net>
  8     <!-- 将日志输出到控制台 -->
  9     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
 10       <layout type="log4net.Layout.PatternLayout">
 11         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 12       </layout>
 13     </appender>
 14
 15     <!-- 将日志写到文件中 -->
 16     <appender name="FileAppender" type="log4net.Appender.FileAppender">
 17       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
 18       <file value="Logs/FileAppender.log" />
 19       <!-- 将日志信息追加到已有的日志文件中-->
 20       <appendToFile value="true" />
 21       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
 22       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 23
 24       <layout type="log4net.Layout.PatternLayout">
 25         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 26       </layout>
 27     </appender>
 28
 29     <!-- 将日志以回滚文件的形式写到文件中 -->
 30     <!-- 按文件大小切分日志文件 -->
 31     <appender name="RollingFileAppenderBySize" type="log4net.Appender.RollingFileAppender">
 32       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
 33       <file value="Logs/RollingFileAppenderBySize.log" />
 34       <!-- 将日志信息追加到已有的日志文件中-->
 35       <appendToFile value="true" />
 36       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
 37       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 38       <!-- 指定按文件大小切分日志文件 -->
 39       <rollingStyle value="Size" />
 40       <!-- 指定备份日志文件的最大切分数量,如果超过指定切分文件个数,日志将进行覆写 -->
 41       <maxSizeRollBackups value="5" />
 42       <!-- 指定每个切分日志文件的大小 -->
 43       <maximumFileSize value="1KB" />
 44       <!-- 指定每个切分文件具有相同的名字 -->
 45       <!-- 日志文件进行切分后,每个日志文件的名字分别为:RollingFileAppenderBySize.log, RollingFileAppenderBySize.log.1, ..., RollingFileAppenderBySize.log.5 -->
 46       <staticLogFileName value="true" />
 47
 48       <layout type="log4net.Layout.PatternLayout">
 49         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 50       </layout>
 51     </appender>
 52
 53     <!-- 按日期切分日志文件 -->
 54     <appender name="RollingFileAppenderByDate" type="log4net.Appender.RollingFileAppender">
 55       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
 56       <file value="Logs/RollingFileAppenderByDate.log" />
 57       <!-- 将日志信息追加到已有的日志文件中-->
 58       <appendToFile value="true" />
 59       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
 60       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 61       <!-- 指定按日期切分日志文件 -->
 62       <rollingStyle value="Date" />
 63       <!-- 每分钟切分一个日志文件 -->
 64       <!-- 每天切分一个日志文件的写法为:"yyyyMMdd" -->
 65       <datePattern value="yyyyMMdd-HHmm" />
 66       <!-- 指定每个切分文件具有相同的名字 -->
 67       <staticLogFileName value="true" />
 68
 69       <layout type="log4net.Layout.PatternLayout">
 70         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 71       </layout>
 72     </appender>
 73
 74     <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
 75     <appender name="RollingFileAppenderNameByDate" type="log4net.Appender.RollingFileAppender">
 76       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
 77       <file value="Logs/" />
 78       <!-- 将日志信息追加到已有的日志文件中-->
 79       <appendToFile value="true" />
 80       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
 81       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
 82       <!-- 指定按日期切分日志文件 -->
 83       <rollingStyle value="Date" />
 84       <!-- 日志文件的命名规则 -->
 85       <datePattern value="&quot;Logs_&quot;yyyyMMdd-HHmm&quot;.log&quot;" />
 86       <!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
 87       <staticLogFileName value="false" />
 88
 89       <layout type="log4net.Layout.PatternLayout">
 90         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
 91       </layout>
 92     </appender>
 93
 94     <!-- 既按大小又按日期切分日志文件 -->
 95     <appender name="RollingFileAppenderBySizeAndDate" type="log4net.Appender.RollingFileAppender">
 96       <!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
 97       <file value="Logs/RollingFileAppenderBySizeAndDate.log" />
 98       <!-- 将日志信息追加到已有的日志文件中-->
 99       <appendToFile value="true" />
100       <!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
101       <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
102       <!-- 指定既按大小又按日期切分日志文件 -->
103       <rollingStyle value="Composite" />
104       <!-- 指定备份日志文件的最大切分数量,如果超过指定切分文件个数,日志将进行覆写 -->
105       <maxSizeRollBackups value="5" />
106       <!-- 指定每个切分日志文件的大小 -->
107       <maximumFileSize value="1KB" />
108       <!-- 每分钟切分一个日志文件 -->
109       <!-- 每天切分一个日志文件的写法为:"yyyyMMdd" -->
110       <datePattern value="yyyyMMdd-HHmm" />
111       <!-- 指定每个切分文件具有相同的名字 -->
112       <staticLogFileName value="true" />
113
114       <layout type="log4net.Layout.PatternLayout">
115         <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
116       </layout>
117     </appender>
118
119     <root>
120       <!-- 控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF -->
121       <!-- 比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 -->
122       <!-- 如果没有定义LEVEL的值,则缺省为DEBUG -->
123       <level value="ALL" />
124       <!-- 将日志输出到控制台 -->
125       <appender-ref ref="ConsoleAppender" />
126       <!-- 将日志写到文件中 -->
127       <appender-ref ref="FileAppender" />
128       <!-- 按文件大小切分日志文件 -->
129       <appender-ref ref="RollingFileAppenderBySize" />
130       <!-- 按日期切分日志文件 -->
131       <appender-ref ref="RollingFileAppenderByDate" />
132       <!-- 按日期切分日志文件,并将日期作为日志文件的名字 -->
133       <appender-ref ref="RollingFileAppenderNameByDate" />
134       <!-- 既按大小又按日期切分日志文件 -->
135       <appender-ref ref="RollingFileAppenderBySizeAndDate" />
136     </root>
137   </log4net>
138 </configuration>

  多次运行应用程序,生成的日志文件如下所示:

时间: 2024-10-12 17:07:04

Log4net入门(回滚日志文件篇)的相关文章

MySQL5.7 可以回收(收缩)undo log回滚日志物理文件空间

undo log回滚日志是保存在共享表空间ibdata1文件里,随着业务的不停运转,ibdata1文件会越来越大,想要回收(收缩空间大小)极其困难和复杂, 必须先mysqldump -A全库的导出,然后删掉data目录,然后重新初始化安装,最后再把全库的SQL文件导入,采用这种方法进行ibdata1文件的回收. 在MySQL5.6里,可以把undo log回滚日志分离出去,到一个单独的表空间里,具体请参考:http://hcymysql.blog.51cto.com/5223301/973450

eclipse,myeclipse 误删文件,回滚历史文件操作

昨天因为误操作把一个写了一上午的代码给删了,找到的这个,以前竟然还没发现有这个功能- -! 具体操作: 1.建立同路径同名的文件 2.文件上右键 --> Compare With --> Local History 3.根据历史记录回滚文件历史

C# 开发 Windows 服务 使用Log4net 组件 不能生成日志文件

使用VS2012开发Windows服务,需要使用Log4net日志组件记录业务情况,但是始终生成不了日志文件. 1 /// <summary> 2 /// 入口方法 3 /// </summary> 4 /// <param name="args">参数</param> 5 public static void Main(string[] args) 6 { 7 // 加载Log4net模块 8 LogHelper.SetConfig(&

OS X环境下SVN回滚工程到指定版本,回滚指定文件到指定版本

1.打开命令行终端 2.cd + 工程或文件目录 3.svn update 工程目录或文件目录 -r 版本号 在Xcode中选中文件,右键选择''show in finder''(也可以用快捷键,不过要自己添加呦Xcode->Preferences->Key Bindings,哥用的是command+9),该文件就会在Finder中打开 然后直接把文件拖到终端中,文件路径就被添加进命令行终端了,运行以上的命令,就可以更新到自己想要的版本了- 告诉你一个SVN的小技巧 使用过SVN的同学都知道更

JAVA log4j日志文件使用

//1.导入jar包,log4j-1.2.17.jar//2.src下创建log4j.properties文件//3.配置properties文件/*log4j.rootLogger(默认是对整个工程生效)=DEBUG,stdout(控制台),a, b, -日志级别(ALL<DEBUG<INFO<WARN<ERROR<FATAL<OFF)log4j.logger.com.hutu=info, stdout,表示该日志只对package com.hutu生效 log4j.

Log4net入门(WCF篇)

在上一篇Log4net入门(ASP.NET MVC 5篇)中,我们讲述了如何在ASP.NET MVC 5项目中使用log4net.在这一篇中,我们将讲述如何在WCF应用中使用log4net,为了讲述这个过程,我们将创建三个项目:WCF服务库项目.WCF服务应用程序和客户端应用程序.WCF服务库项目主要用于编写我们的WCF契约及服务,WCF服务应用程序主要用于将我们的WCF服务库托管到IIS上,客户端应用程序主要目的就是调用我们托管到IIS上的WCF服务. 一.项目创建 1.空白解决方案的创建:启

数据库日志文件和内存刷新机制

1.错误日志 error log 错误日志 error.log :记录了MySQL启动.运行.关闭过程中出现的问题. 2.慢查询日志 记录超过阀值时间的所有SQL语句,默认10s,等于10s不记. 1.5.1记录到slow_log表中. log_output参数可以指定慢查询日志输出格式,默认FILE , 可以设置成TABLE,这样就可以查看表了. 3.查询日志 记录所有日志无论是否正确执行. 4.二进制日志  binary log 记录关于事务的具体操作内容,就是对事务操作的描述,并未记录数据

回滚的意义---JDBC事务回滚探究

JDBC手动事务提交回滚的常见写法一直是rollback写在commit的catch之后: try{ conn.setAutoCommit(false); ps.executeUpdate(); ps.executeUpdate(); conn.commit(); }catch(Exception e){ conn.rollback(); } 但是,这种回滚是没有意义的: 一旦commit前出错, 就不提交了, 回滚无用 一旦commit了, 说明没错, 不用回滚 找到一篇和我观点相同的文章:

上线代码、回滚代码

上线脚本 #!/bin/bash FWDIR="$(cd `dirname "${BASH_SOURCE-$0}"`; pwd)" bin=`dirname "$0"` bin=`cd "$bin"; pwd` now=`date "+%Y%m%d_%H%M%S"` tag_release=di.release.${now} [email protected]:bdp-server/bdp-di.git e