افزودن لاگ به اسکریپت پایتون — راهنمای کاربردی
در این مقاله، چگونگی افزودن قطعه کدی به اسکریپتهای پایتون آموزش داده شده است که امکان ثبت لاگ (Log) را به فایلهای پایتون اضافه کند. در واقع، بدین شکل میتوان اطلاعات مربوط به خطاها و دیگر موارد را لاگ (سوابق مربوط به آنها را ثبت کرد) و با هدف خطایابی یا دیگر موارد، از آنها استفاده کرد. در ادامه، روش افزودن لاگ به اسکریپت پایتون همراه با کدهای لازم برای انجام این کار، ارائه شده است.
افزودن لاگ به اسکریپت پایتون
راهکار اول در این راستا، استفاده از ماژول لاگ کردن برای یک برنامه ساده است.
1import logging
2
3def main():
4 # Configure the logging system
5 logging.basicConfig(filename ='app.log',
6 level = logging.ERROR)
7
8 # Variables (to make the calls that follow work)
9 hostname = 'www.python.org'
10 item = 'spam'
11 filename = 'data.csv'
12 mode = 'r'
13
14 # Example logging calls (insert into your program)
15 logging.critical('Host %s unknown', hostname)
16 logging.error("Couldn't find %r", item)
17 logging.warning('Feature is deprecated')
18 logging.info('Opening file %r, mode = %r', filename, mode)
19 logging.debug('Got here')
20
21if __name__ == '__main__':
22main()
- پنج فراخوانی لاگ (()critical(), error(), warning(), info(), debug) نشانگر سطوح مختلف دقت به ترتیب افزایشی (صعودی) است.
- آرگومان سطح به basicConfig() یک فیلتر است. همه پیامها در سطح پایینتری از این تنظیمات، نادیده انگاشته میشود.
آرگومان برای هر عملیات لاگ یک رشته پیغام است که به وسیله صفر یا تعداد بیشتری آرگومان دنبال میشود. هنگامی که آخرین پیغام لاگ ساخته میشود، عملگر % برای قالببندی رشته پیغام با استفاده از آرگومانهای فراهم شده مورد استفاده قرار میگیرد.
در صورت اجرای کد بالا، محتوای فایل app.log به صورت زیر خواهد بود.
CRITICAL:root:Host www.python.org unknown ERROR:root:Could not find 'spam'
برای تغییر خروجی یا سطح خروجی، پارامترها به Config() پایه تغییر میکنند و فراخوانی به صورتی که در کد زیر آمده، انجام میشود.
logging.basicConfig( filename = 'app.log', level = logging.WARNING, format = '%(levelname)s:%(asctime)s:%(message)s')
خروجی قطعه کد بالا به صورت زیر است.
CRITICAL:2012-11-20 12:27:13, 595:Host www.python.org unknown ERROR:2012-11-20 12:27:13, 595:Could not find 'spam' WARNING:2012-11-20 12:27:13, 595:Feature is deprecated
پیکربندی لاگ به صورت کد سخت به طور مستقیم در برنامه انجام شده است. برای پیکربندی آن از فایل پیکربندی، باید فراخوانی basicConfig() را به صورت زیر تغییر داد.
1import logging
2import logging.config
3
4def main():
5 # Configure the logging system
6 logging.config.fileConfig('logconfig.ini')
7 ...
اکنون، پیکربندی مانند زیر باید ساخته شود.
[loggers] keys=root [handlers] keys=defaultHandler [formatters] keys=defaultFormatter [logger_root] level=INFO handlers=defaultHandler qualname=root [handler_defaultHandler] class=FileHandler formatter=defaultFormatter args=('app.log', 'a') [formatter_defaultFormatter] format=%(levelname)s:%(name)s:%(message)s
برای تغییر دادن پیکربندی، میتوان فایل را به صورتی که مناسب است پیکربندی کرد. این کد برای برنامهها و اسکریپتهای ساده مناسب است.
فقط کافی است که کاربر اطمینان حاصل کند که basicConfig() پیش از هر فراخوانی لاگی، فراخوانی شده و برنامه خروجی لاگ را میسازد.
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی پایتون
- آموزش تکمیلی برنامهنویسی پایتون
- مجموعه آموزشهای دادهکاوی و یادگیری ماشین
- زبان برنامهنویسی پایتون (Python) — از صفر تا صد
- یادگیری علم داده (Data Science) با پایتون — از صفر تا صد
- آموزش پایتون (Python) — مجموعه مقالات جامع وبلاگ فرادرس
^^