一个不那么可笑的问题:比如说,你创建了一个网络应用,在云端的专用Linux服务器上运行。成千上万的用户访问你的网络应用,突然......它崩溃了。你的用户开始抱怨,你也失去了收入。更重要的是,你的信誉每小时都在流失。你的服务器坏了,那么你该怎么办? 
首先,不要惊慌。
让我们分析一下你的服务器日志!
这篇文章告诉你如何在Python中把你的日志文件转换成CSV文件,你可以用它来进一步处理(例如,在Pandas或Excel中)。
例子中的问题表述
给定一个文件my_file.log ,就像我从一个真实的IBM服务器日志例子中提取的那样。
03/22 08:51:01 INFO :.main: *************** RSVP Agent started ***************
03/22 08:51:01 INFO :...locate_configFile: Specified configuration file: /u/user10/rsvpd1.conf
03/22 08:51:01 INFO :.main: Using log level 511
03/22 08:51:01 INFO :..settcpimage: Get TCP images rc - EDC8112I Operation not supported on socket.
03/22 08:51:01 INFO :..settcpimage: Associate with TCP/IP image name = TCPCS
如何将这个日志文件转换为以下标准逗号分隔值格式的CSV文件。
03/22,08:51:01,INFO,:.main: *************** RSVP Agent started ***************
03/22,08:51:01,INFO,:...locate_configFile: Specified configuration file: /u/user10/rsvpd1.conf
03/22,08:51:01,INFO,:.main: Using log level 511
03/22,08:51:01,INFO,:..settcpimage: Get TCP images rc - EDC8112I Operation not supported on socket.
03/22,08:51:01,INFO,:..settcpimage: Associate with TCP/IP image name = TCPCS
或者,如果你用Excel打开它,会是这个样子。

更漂亮,不是吗?与第一种表示方法(日志文件)不同,这种CSV表示方法对(大多数)人来说更容易阅读。
用Pandas将服务器日志转换为CSV
你可以在Python中通过四个简单的步骤将.log 文件转换为CSV文件。**(1)安装Pandas 库,(2) 导入Pandas库,(3)将日志文件作为DataFrame读取,(4) 将DataFrame写到**CSV文件中。
- (可在shell中选择)
pip install pandas import pandas as pddf = pd.read_csv('my_file.log', sep='\s\s+', engine='python')df.to_csv('my_file.csv', index=None)
下面是一个最小的例子。
import pandas as pd
df = pd.read_csv('my_file.log', sep='\s\s+', engine='python')
df.to_csv('my_file.csv', index=None)
注意:正则表达式 sep='\s\s+' ,在两个CSV值之间指定一个以上的单空格作为分隔符。如果你有一个不同的分隔符字符串,你可以在这里定义它。
你指定engine='python' 来告诉 Pandas 我们希望 Python 正则表达式引擎处理分隔符正则表达式。
代码的结果是下面的 CSV 文件。

你可以用这个CSV文件作为输入,比如说,用Excel表或谷歌电子表格进行进一步处理和分析。
这就是你的日志文件转换为CSV文件并导入Excel的样子。

这是你的日志文件作为Pandas DataFrame的样子。
03/22 ... :.main: *************** RSVP Agent started ***************
0 03/22 ... :...locate_configFile: Specified configuration...
1 03/22 ... :.main: Using log level 511
2 03/22 ... :..settcpimage: Get TCP images rc - EDC8112I O...
3 03/22 ... :..settcpimage: Associate with TCP/IP image na...
[4 rows x 4 columns]