查阅 lars 的文档,以了解如何读取 Apache、Nginx 和 IIS 日志,并了解你还可以使用它做什么。再次感谢 Dave 提供的出色工具!
我和 Dave 一直在努力扩展 piwheel 的日志记录器,使其包含网页点击量、软件包搜索等内容,归功于 lars,这些并不难。它不会告诉我们有关用户的任何答案。我们仍然需要进行数据分析,但它去掉了复杂不便的文件格式,并以我们可以利用的方式将它放入我们的数据库。
s = set()with open('ssl_access.log') as f: with ApacheSource(f) as source: for row in source: if row.status == 404: s.add(row.request.url.path_str)print(len(s))
你可能要对这些数据去重,并打印独立的 404 页面数量:
with open('ssl_access.log') as f: with ApacheSource(f) as source: for row in source: if row.status == 404: print(row.request.url.path_str)
如果你只想显示 404 请求,可以执行以下操作:
with open('ssl_access.log') as f: with ApacheSource(f) as source: for row in source: print(f'hit {row.request.url.path_str} with status code {row.status}')
它解析了日志条目,并将数据放入结构化格式中。该条目已成为具有与条目数据相关属性的命名元组namedtuple,因此,例如,你可以使用 row.status 访问状态代码,并使用 row.request.url.path_str 访问路径:
Row(remote_host=IPv4Address('81.174.152.222'), ident=None, remote_user=None, time=DateTime(2020, 6, 30, 23, 38, 3), request=Request(method='GET', url=Url(scheme='', netloc='', path_str='/', params='', query_str='', fragment=''), protocol='HTTP/1.1'), status=200, size=6763)
它会为每条日志显示如下结果:
with open('ssl_access.log') as f: with ApacheSource(f) as source: for row in source: print(row)
你的日志文件将充满这样的条目,不仅是每个打开的页面,还包括返回的每个文件和资源:每个 CSS 样式表、JavaScript 文件和图像,每个 404 请求、每个重定向、每个爬虫。要从日志中获取有意义的数据,你需要对条目进行解析、过滤和排序。这就是 Lars 的用处。本示例将打开一个日志文件并打印每一行的内容:
这是一个显示了请求源 IP 地址、时间戳、请求文件路径(在本例中是主页 /)、HTTP 状态代码,用户代理(Ubuntu 上的 Firefox)等的请求。
81.174.152.222 - - [30/Jun/2020:23:38:03 +0000] "GET / HTTP/1.1" 200 6763 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:77.0) Gecko/20100101 Firefox/77.0
首先,日志是什么样的?
首先,找到一个 Web 访问日志并制作一个副本。你需要将日志文件下载到计算机上进行操作。我在示例中使用的是 Apache 日志,但是经过一些小(且直观)的更改,你可以使用 Nginx 或 IIS。在典型的 Web 服务器上,你会在 /var/log/apache2/ 中找到 Apache 日志,通常是 access.log、ssl_access.log(对于 HTTPS)或 gzip 压缩后的轮转日志文件,如 access-20200101.gz 或者 ssl_access-20200101.gz 。
在某些系统上,正确的方式是 sudo pip3 install lars。
$ pip install lars
你可以使用以下方法安装lars:
Lars 是 Dave Jones 写的另一个隐藏的宝石。我最初是在本地 Python 用户组中看到 Dave 演示 lars。几年后,我们开始在 piwheels 项目中使用它来读取 Apache 日志并将行插入到我们的 Postgres 数据库中。当树莓派用户从 piwheels.org下载 Python 包时,我们会记录文件名、时间戳、系统架构(Arm 版本)、发行版名称/版本,Python 版本等。由于它是一个关系数据库,因此我们可以将这些结果加入其他表中以获得有关文件的更多上下文信息。
Lars 是 Python 写的 Web 服务器日志工具包。这意味着你可以使用 Python 通过简单的代码来回溯(或实时)解析日志,并对数据做任何你想做的事:将它存储在数据库中、另存为 CSV 文件,或者立即使用 Python 进行更多分析。
iPhone铃声设置方法:与苹果设备铃声轻松切换
iPhone作为苹果公司的一款智能手机,在众多功能中,有一个与个性化息息相关的问题,那就是铃声设置。对于那些追求高品质生活的人来说,拥有一部iPhone是种荣幸,那么今天我们将一起来了解一下iPhone铃声设置的相关知识,告别无聊的默认铃声,让你的iPhone生活更加丰富多彩。
一、iPhone铃声设置方法
1. 首先,打开您的iPhone,进入“设置”应用程序。
2. 选择“隐私”选项,进入“媒体与存储”页面。
3. 找到“铃声”图标,点击进入铃声设置界面。
4. 在铃声设置界面中,您可以看到目前系统随机设置的铃声。
5. 点击“编辑”按钮,将会进入铃声编辑界面。
6. 在铃声编辑界面中,您可以更改铃声的音量、播放模式以及重复次数等设置。
7. 如果您想卸载当前系统铃声,请直接点击“删除”按钮。
8. 在铃声设置界面中,您还可以添加自己喜欢的铃声,或导入苹果官方的铃声库。
二、如何为iPhone设置独特铃声
1. 首先,打开您的iPhone,进入“设置”应用程序。
2. 选择“隐私”选项,进入“媒体与存储”页面。
3. 找到“铃声”图标,点击进入铃声设置界面。
4. 在铃声设置界面中,您可以看到目前系统随机设置的铃声。
5. 点击“编辑”按钮,将会进入铃声编辑界面。
6. 在铃声编辑界面中,您可以更改铃声的音量、播放模式以及重复次数等设置。
7. 如果您想卸载当前系统铃声,请直接点击“删除”按钮。
8. 在铃声设置界面中,您还可以添加自己喜欢的铃声,或导入苹果官方的铃声库。
三、iPhone铃声设置小贴士
1. 在添加铃声时,建议使用苹果官方铃声库中的音乐。
2. 尽量避免使用嘈杂或刺耳的音乐。
3. 铃声的重复次数可以根据需要进行设置,但建议避免过度重复。
4. 如果您想取消铃声的重复,请在铃声编辑界面中找到“循环”选项,并关闭它。
四、iPhone铃声设置实战案例
假设您刚刚购买了iPhone,并 fresh 了这款设备,那么您可能迫不及待地想为 iPhone 设置一首属于自己的铃声。那么现在,就让我为您介绍一下 iPhone 铃声设置的实战案例,教您如何为 iPhone 设置一首时尚、充满个性的铃声。
1. 下载苹果官方铃声库
首先,您需要下载苹果官方铃声库,这是一款非常实用且具有多样性的铃声库,您可以在这里找到您想要的铃声。
2. 在铃声设置中,导入苹果官方铃声库
在下载铃声库之后,您需要将铃声导入到 iPhone 的铃声设置中。在铃声设置中,找到“编辑”按钮,然后选择“从 iCloud”选项,点击“导入”。
3. 选择铃声库中的音乐
在导入苹果官方铃声库之前,您需要选择一首美丽的铃声。从库中选择您喜欢的音乐,然后点击“下一步”。
4. 设置铃声音量
在导入铃声后,您需要设置铃声的音量。在铃声编辑界面中,您可以看到一个可以调节音量的滑块,调整您喜欢的音量,然后点击“完成”。
5. 设置铃声的播放模式
如果您想让铃声在 iPhone 响铃时播放不同的音效,您可以设置铃声的播放模式。在铃声编辑界面中,找到“播放”选项,并选择您想要的播放模式,然后点击“完成”。
6. 设置铃声的重复次数
有些铃声可能会在 iPhone 响铃时重复多次,这可能会使铃声变得更令人烦躁。您可以在铃声编辑界面中设置铃声的重复次数,以避免这种烦恼。
7. 完成铃声设置
完成上述设置后,您可以点击铃声编辑界面右上角的“完成”按钮,为 iPhone 设置全新的铃声。现在,您的 iPhone 将发出您所喜欢的铃声,让您在每一天都充满活力。