সরল লগ ইন ফাইল উদাহরণস্বরূপ জাঙ্গো 1.3+ এর জন্য


100

প্রকাশিত নোটগুলি বলে:

জ্যাঙ্গো ১.৩ পাইথনের লগিং মডিউলটির জন্য ফ্রেমওয়ার্ক-স্তরের সমর্থন যোগ করে।

ওটা সুন্দর. আমি এর সুবিধা নিতে চাই দুর্ভাগ্যক্রমে ডকুমেন্টেশনগুলি পুরো কাজ উদাহরণ কোড আকারে একটি রূপালী থালায় আমার কাছে এটি হস্তান্তর করে না যা দেখায় যে এটি কতটা সহজ এবং মূল্যবান।

আমি কীভাবে এই মজাদার নতুন বৈশিষ্ট্যটি সেট আপ করব যাতে আমি আমার কোডটি মরিচ করে ফেলতে পারি

logging.debug('really awesome stuff dude: %s' % somevar)

এবং "/tmp/application.log" ফাইলটি পূরণ করুন দেখুন

18:31:59 Apr 21 2011 awesome stuff dude: foobar
18:32:00 Apr 21 2011 awesome stuff dude: foobar
18:32:01 Apr 21 2011 awesome stuff dude: foobar

ডিফল্ট পাইথন লগিং এবং এই 'ফ্রেমওয়ার্ক-স্তর সমর্থন' এর মধ্যে পার্থক্য কী?

উত্তর:


187

আমি সত্যিই এটাকে ভালবাসি এখানে আপনার কাজের উদাহরণ! সিরিয়াসলি এটি দুর্দান্ত!

এটি আপনার রেখে দিয়ে শুরু করুন settings.py

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'formatters': {
        'standard': {
            'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
            'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
    },
    'handlers': {
        'null': {
            'level':'DEBUG',
            'class':'django.utils.log.NullHandler',
        },
        'logfile': {
            'level':'DEBUG',
            'class':'logging.handlers.RotatingFileHandler',
            'filename': SITE_ROOT + "/logfile",
            'maxBytes': 50000,
            'backupCount': 2,
            'formatter': 'standard',
        },
        'console':{
            'level':'INFO',
            'class':'logging.StreamHandler',
            'formatter': 'standard'
        },
    },
    'loggers': {
        'django': {
            'handlers':['console'],
            'propagate': True,
            'level':'WARN',
        },
        'django.db.backends': {
            'handlers': ['console'],
            'level': 'DEBUG',
            'propagate': False,
        },
        'MYAPP': {
            'handlers': ['console', 'logfile'],
            'level': 'DEBUG',
        },
    }
}

এখন এই সব কি মানে?

  1. ফর্মার্সগুলি। / পরিচালন.পি রানসরভারের মতো একই শৈলীতে আসতে পছন্দ করি
  2. হ্যান্ডলারগুলি - আমি দুটি লগ চাই - একটি ডিবাগ পাঠ্য ফাইল এবং একটি তথ্য কনসোল। এটি আমাকে সত্যিকার অর্থে খনন করতে (যদি প্রয়োজন হয়) অনুমতি দেয় এবং হুডের নীচে কী ঘটে তা দেখার জন্য একটি পাঠ্য ফাইলটি সন্ধান করে।
  3. লগার - এখানে আমরা লগ করতে চাই তা পেরেক। সাধারণভাবে জাঙ্গো সতর্কতা অর্জন করে এবং উপরে - ব্যতিক্রম (অতএব প্রচার করা) ব্যাকেন্ডস যেখানে আমি এসকিউএল কলগুলি দেখতে পাচ্ছি যেহেতু তারা পাগল হতে পারে .. সর্বশেষে আমার অ্যাপ্লিকেশনটি ছিল আমার দুটি হ্যান্ডলার ছিল এবং এটিতে সমস্ত কিছু ধাক্কা।

এখন আমি কীভাবে এমওয়াইএপপিকে এটি ব্যবহার করতে সক্ষম করব ...

প্রতি ডকুমেন্টেশন আপনার ফাইল (views.py) উপরের এই করা ..

import logging
log = logging.getLogger(__name__)

তারপরে কিছু করার জন্য এটি করুন।

log.debug("Hey there it works!!")
log.info("Hey there it works!!")
log.warn("Hey there it works!!")
log.error("Hey there it works!!")

লগ স্তরগুলি এখানে এবং বিশুদ্ধ অজগরটির জন্য এখানে ব্যাখ্যা করা হয়েছে


7
আমি উপরের পদক্ষেপগুলি অনুসরণ করেছি। ফাইল তৈরি হয়েছে তবে এতে কিছুই লেখা হয় না। আবেদন সাহায্য
বিবেক এস

12
@ ইনটার্নাল সার্ভারএরআর আপনার লগার বিভাগে আপনার অ্যাপের নামের সাথে এমওয়াইপিপি প্রতিস্থাপন করতে হবে।
রোগ

9
আপনি বাজি! 'এমওয়াইপিপি' ''
rh0dium

10
স্পষ্টতার জন্য, আপনি যাকে লগ ইন করেন settings.py, যেমন MYAPPএই উদাহরণে, কল করার ক্ষেত্রেও প্যারামিটার হয়ে থাকে logging.getLogger। সুতরাং, যদি আপনার প্রকল্পে অনেকগুলি স্ব-অন্তর্ভুক্ত অ্যাপ্লিকেশন রয়েছে এবং আপনি যদি সেগুলি ব্যবহার করতে চান তবে একটি সাধারণ লগার ব্যবহার করুন আপনার logging.getLogger('MYAPP')পরিবর্তেlogging.getLogger(__name__)
rhunwicks

4
এটি দুর্দান্ত কাজ করে। 'শ্রেণি' ব্যবহার করতে হয়েছিল: 'লগিং.নুলহ্যান্ডলার' কারণ 'django.utils.log.NullHandler' আর বৈধ নয়, তবে বাকীগুলি আমার জন্য কাজ করেছে 1.11
জ্যাকলিনআইও

4

আংশিকভাবে rh0dium দ্বারা প্রস্তাবিত লগিং কনফিগারেশনের উপর ভিত্তি করে এবং আমি নিজে থেকে আরও কিছু গবেষণা করেছিলাম, আমি জাগানো প্রকল্পের উদাহরণটি চমৎকার লগিং ডিফল্ট - একত্রিত করে ফেলতে শুরু করেছি - ফেল-সুন্দরভাবে- জ্যাঙ্গো ।

নমুনা লগফিল আউটপুট:

2016-04-05 22:12:32,984 [Thread-1    ] [INFO ] [djangoproject.logger]  This is a manually logged INFO string.
2016-04-05 22:12:32,984 [Thread-1    ] [DEBUG] [djangoproject.logger]  This is a manually logged DEBUG string.
2016-04-05 22:12:32,984 [Thread-1    ] [ERROR] [django.request      ]  Internal Server Error: /
Traceback (most recent call last):
  File "/Users/kermit/.virtualenvs/fail-nicely-django/lib/python3.5/site-packages/django/core/handlers/base.py", line 149, in get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/kermit/.virtualenvs/fail-nicely-django/lib/python3.5/site-packages/django/core/handlers/base.py", line 147, in get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/kermit/projekti/git/fail-nicely-django/djangoproject/brokenapp/views.py", line 12, in brokenview
    raise Exception('This is an exception raised in a view.')
Exception: This is an exception raised in a view.

বিস্তারিত ব্যবহার ব্যাখ্যা করা হয় README , কিন্তু মূলত, আপনি অনুলিপি এটির আপনার জ্যাঙ্গো প্রকল্প এবং যোগ করার জন্য মডিউল from .logger import LOGGINGআপনার নীচের অংশে অবস্থিত settings.py

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.