ApacheLog
- Import 可以读取各种标准日志格式,以及用户定义的日志格式.
背景
-
- 日志文件.
- 常见的变体有通用日志格式、扩展日志文件格式和 Apache 访问日志格式.
- 用于 MathLM,Wolfram 系统许可证管理器.
- 纯文本格式.
- 存储关于网页服务器交易的信息.
- 以一行文本代表每条记录.
- 允许用户定义的记录格式.
- 由 Apache 公司研发.
Import 与 Export
- Import["file","ApacheLog"] 将日志文件导入为 Tabular 对象.
- Import["file",{"ApacheLog",elem}] 导入指定元素.
- Import["file",{"ApacheLog",elem,subelem1,…}] 导入子元素 subelemi,适用于导入部分数据.
- 导入日志文件时必须指定格式 "ApacheLog".
- 请到以下参考页面了解全部信息:
-
Import 从文件导入 CloudImport 从云对象导入 ImportString 从字符串导入 ImportByteArray 从字节数组导入
参数
- Import 的通用参数:
-
"Elements" 该文件可用的参数和选项列表 "Summary" 文件摘要 "Rules" 所有可用参数的规则列表 - 表示数据的参数:
-
"Data" 二维数组 "Dataset" Dataset 形式的表格数据 "EventSeries" 表格数据作为 EventSeries "Tabular" Tabular 对象 "TimeSeries" 表格数据作为 TimeSeries - 默认情况下,Import 使用 "Tabular" 元素.
- 如果想导入部分数据,可用行和列规范形式 {"Tabular",rows,cols} 指定 "Tabular" 元素的子元素,其中 rows 和 cols 可为以下形式:
-
n 第 n 行或列 -n 从末尾开始数 n;;m 从 n 到 m n;;m;;s 从 n 到 m,步长为 s {n1,n2,…} 特定行或列 ni - 列规范也可以是以下任意形式:
-
"col" 单列 "col" {col1,col2,…} 列名列表 coli - 数据描述符元素:
-
"ColumnLabels" 列的名称 "ColumnTypes" 给出每列数据类型的关联 "Schema" TabularSchema 对象 - 元数据元素:
-
"ColumnCount" 文件中存储的列的数量 "Dimensions" 数据的的维度 "RowCount" 文件中存储的行的数量
导入的选项
- 一般的 Import 选项:
-
"DataFormat" Automatic 格式指定,以字符串形式给出 "Schema" Automatic 用于构建 Tabular 对象的方法 "TimeColumn" Automatic 在 "EventSeries" 和 "TimeSeries" 元素中用作时间的列 - "DataFormat" 选项的可能设置包括:
-
Automatic 自动确定格式规范(默认) "ApacheErrorLog" Apache 错误日志格式,用于服务器出现的问题和诊断 "CommonLog" Common Log Format (CLF),用于基本网络流量分析 "CombinedLog" 包含引荐来源的通用日志,用于网络分析和 SEO "CommonLogVHost" 包含虚拟主机的通用日志,用于多站点托管环境 "RefererLog" 只给出引荐日志,用于营销和 SEO format 任意字段和记录分隔符 - 要导入自定义日志格式,请使用 "DataFormat"->format 来指定每条记录的格式,每条记录由数据元素和记录分隔符组成,如 "`Field1` [`Field2`] `Field3`".
- 格式 format 规范可以是一个字符串和 OptionalElement 的列表,用于表示在某些行中可能缺失的元素.
- "Schema" 选项的可能设置包括:
-
schema 一个完整的 TabularSchema 指定 propval 一个 schema 的属性和值(请查看 TabularSchema 的参考页面) <|"prop1"val1,…|> schema 的属性和值组成的关联
范例
打开所有单元 关闭所有单元基本范例 (2)
将日志文件导入为 Tabular:
Import["ExampleData/apache_error.log", "ApacheLog"]Import["ExampleData/apache_error.log", {"ApacheLog", "Summary"}]范围 (2)
导入的元素 (25)
"ColumnCount" (1)
"ColumnLabels" (1)
"ColumnTypes" (1)
"Data" (7)
Import["ExampleData/apache_error.log", {"ApacheLog", "Data"}]Import["ExampleData/apache_error.log", {"ApacheLog", "Data", 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "Data", {1, 5, 7}}]Import["ExampleData/apache_error.log", {"ApacheLog", "Data", 1 ;; 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "Data", 5, 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "Data", All, 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "Data", All, {"Source", "Referer"}}]"Dataset" (2)
以将日志文件导入为 Dataset:
Import["ExampleData/apache_error.log", {"ApacheLog", "Dataset"}]Import["ExampleData/apache_error.log", {"ApacheLog", "Dataset", All, {"Source", "Referer"}}]"Dimensions" (1)
"EventSeries" (1)
将日志文件导入为 EventSeries:
Import["ExampleData/apache_error.log", {"ApacheLog", "EventSeries"}]Import["ExampleData/apache_error.log", {"ApacheLog", "EventSeries", 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "EventSeries", {1, 5}}]Import["ExampleData/apache_error.log", {"ApacheLog", "EventSeries", 1 ;; 10}]Import["ExampleData/apache_error.log", {"ApacheLog", "EventSeries", All, {"Date", "Module", "LogLevel"}}]"RowCount" (1)
"Schema" (1)
获取 TabularSchema 对象:
Import["ExampleData/apache_error.log", {"ApacheLog", "Schema"}]"Summary" (1)
"Tabular" (7)
将日志文件导入为 Tabular 对象:
Import["ExampleData/apache_error.log", {"ApacheLog", "Tabular"}]Import["ExampleData/apache_error.log", {"ApacheLog", "Tabular", 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "Tabular", {1, 5, 7}}]Import["ExampleData/apache_error.log", {"ApacheLog", "Tabular", 1 ;; 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "Tabular", 5, 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "Tabular", All, 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "Tabular", All, {"Source", "Referer"}}]"TimeSeries" (1)
将日志文件导入为 TimeSeries:
Import["ExampleData/apache_error.log", {"ApacheLog", "TimeSeries"}]Import["ExampleData/apache_error.log", {"ApacheLog", "TimeSeries", 5}]Import["ExampleData/apache_error.log", {"ApacheLog", "TimeSeries", {1, 5}}]Import["ExampleData/apache_error.log", {"ApacheLog", "TimeSeries", 1 ;; 10}]Import["ExampleData/apache_error.log", {"ApacheLog", "TimeSeries", All, {"Date", "Module", "LogLevel"}}]导入的选项 (7)
"DataFormat" (4)
Import 可自动从日志文件中存储的数据推断格式规范:
Import["ExampleData/apache_error.log", "ApacheLog"]Import["ExampleData/apache_error.log", "ApacheLog", "DataFormat" -> "ApacheErrorLog"]Import["ExampleData/apache_error.log", "ApacheLog", "DataFormat" -> "[`Date`] [`Module`:`LogLevel`] [pid `ProcessID`:tid `ThreadID`] `Source`: `Error`: [client `Client`] `Message`, referer `Referer`"]log = "Monday [temp = 5C] [precipitation: rain]
Tuesday [temp = 0C]
Wednesday [temp = 2C] [precipitation: hail]";ImportString[log, "ApacheLog", "DataFormat" -> {"`Day` [temp = `Temperature`]", OptionalElement["[precipitation: `Precipitation`]"]}]"Schema" (2)
Import 会根据日志文件中存储的数据自动推断列的标签和类型:
tab = Import["ExampleData/apache_error.log", "ApacheLog"]tab["ColumnTypes"]tab = Import["ExampleData/apache_error.log", "ApacheLog", "Schema" -> {"ColumnKeys" -> {"Date", "Module", "LogLevel", "ProcessID", "ThreadID", "Source", "Error", "Client", "Message", "Referer"}, "ElementType" -> {"Date" -> "Date", "ProcessID" -> "Integer32", "ThreadID" -> "Integer64"}}]tab["ColumnTypes"]"TimeColumn" (1)
相关指南
历史
2007年引入 (6.0) | 在以下年份被更新:2025 (14.3) ▪ 2026 (15.0)