ডিবাগিংয়ের জন্য এনগিনেক্স লগে কীভাবে ভেরিয়েবল আউটপুট করা যায়


83

আমি nginx পরীক্ষা করছি এবং লগ ফাইলগুলিতে ভেরিয়েবল আউটপুট করতে চাই। আমি কীভাবে এটি করতে পারি এবং কোন লগ ফাইল এটি যাবে (অ্যাক্সেস বা ত্রুটি)।

উত্তর:


143

আপনি হেডারের মাধ্যমে nginx ভেরিয়েবল মান প্রেরণ করতে পারেন। উন্নয়নের জন্য কার্যকর।

add_header X-uri "$uri";

এবং আপনি আপনার ব্রাউজারের প্রতিক্রিয়া শিরোনামে দেখতে পাবেন:

X-uri:/index.php

আমি কখনও কখনও স্থানীয় উন্নয়নের সময় এটি করি।

কোনও সাবসেকশন কার্যকর হচ্ছে কিনা তা আপনাকে জানাতেও এটি সুবিধাজনক। এটি ব্যবহার করা হচ্ছে কিনা তা দেখার জন্য এটি কেবল আপনার অনুচ্ছেদের মধ্যে ছিটান।

location ~* ^.+.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt)$ {
    add_header X-debug-message "A static file was served" always;
    ...
}

location ~ \.php$ {
    add_header X-debug-message "A php file was used" always;
    ...
}

সুতরাং http://www.example.com/index.php এর মতো ইউআরএল পরিদর্শন করা http://www.example.com/img/my-ducky.png দেখার সময় পরবর্তী শিরোনামটিকে ট্রিগার করবে প্রাক্তন শিরোনামকে ট্রিগার করবে।


29
দ্রষ্টব্য যে কেবল সফল অনুরোধগুলিতেadd_header কাজ করবে । ডকুমেন্টেশন বলছে যে এটি কেবল 200, 204, 301, 302 বা 304 কোড সহ প্রতিক্রিয়াগুলিতে প্রয়োগ করা যেতে পারে Therefore সুতরাং, এটি HTTP ত্রুটিগুলি ডিবাগ করতে ব্যবহার করা যাবে না।
জন ডব্লিউ এইচ স্মিথ

31
@JohnWHSmith: Marat যেমন লক্ষ করেছি এই উত্তর । এর মতো সংস্করণ 1.7.5 , nginx একটি যোগ "সবসময়" প্যারামিটারটি করতে add_headerযা হেডার কোন ব্যাপার কি প্রতিক্রিয়া কোড ফিরে আসবে। সুতরাং উদাহরণস্বরূপ, add_header X-debug-message "A php file was used" always;500 ত্রুটি কোডের জন্যও কাজ করা উচিত।
yuvilio

6
এটি প্রশ্নের কোনও উত্তর দেয় না। লোকটি ক্লায়েন্টের কাছে না গিয়ে ফাইল লগ করতে লগ করতে চায় ।
আওমাদেদার

37

আপনি HTTP প্রতিক্রিয়া হিসাবে একটি সাধারণ স্ট্রিং ফিরে আসতে পারেন:

location /
{
    return 200 $document_root;
}

1
আপনি যদি দুটি ভেরিয়েবলের মান ফেরত চান?
MakeBackCommodore64

লোকেশনটিতে গিয়ে তাৎক্ষণিকভাবে আমার ব্রাউজারের সংরক্ষণের মতো ডায়ালগটি খোলে (অপেরা, ক্রোমিয়ামে পরীক্ষা করা হয়)। কোন সাড়া নেই।
MakeBackCommodore64

@ MakeBackCommodore64 একটি পাঠ্য / এইচটিএমএল বিষয়বস্তু-টাইপ শিরোনাম যুক্ত হতে পারে।
বিটওয়াইজ

পোস্টম্যান ব্যবহার করে , এটি কোনও অতিরিক্ত শিরোনাম ছাড়াই কাজ করে। ধন্যবাদ!
এক্সেল

19

আপনি log_formatযে আগ্রহের ভেরিয়েবলগুলিতে লগ করেন সে নির্দেশটি ব্যবহার করে আপনি একটি কাস্টম অ্যাক্সেস লগ ফর্ম্যাট সেট করতে পারেন ।


2
ধন্যবাদ, এবং আমি অনুমান করি যে নিজেই কোনও ভেরিয়েবল আউটপুট করার সহজ উপায় নেই?
লুলালালা

@ লুলালালা যে আমি জানি না।
এমজিগর্ভেন

এটি লগের স্তরটিকে নির্দেশিক্রে সেট করা সম্ভব error_logহয় debugযাতে আপনি ভেরিয়েবলের মান এবং যে ব্লকটি কার্যকর করে তা দেখতে পান। উদাহরণerror_log file.log debug
ভিক্টর আগুইলার

1
নোটিশ থার খালি ভেরিয়েবলগুলি -লগ হিসাবে প্রদর্শিত হয় , কিন্তু এনগিনেক্স কোডে সত্যই ফাঁকা, আপনার -কোনও সময় চেক করা উচিত নয় । এটি কখনও কখনও ব্যবহারকারীদের বিভ্রান্ত করে।
হাইগুইটা

6

আরেকটি বিকল্প হ'ল আপনি এনজিএনএক্স তৈরি করার সময় ইকো মডিউলটি অন্তর্ভুক্ত করবেন , বা ওপেনস্টেটি ইনস্টল করুন যা এনগিনেক্স একসাথে এক্সটেনশানগুলির (যেমন প্রতিধ্বনি সহ) বান্ডিল রয়েছে install

তারপরে আপনি সহজেই বিবৃতি দিয়ে আপনার কনফিগারেশনটি ছিটিয়ে দিতে পারেন:

echo "args: $args"

2
যখন আমি এটি চেষ্টা করি এটি প্রকৃত পৃষ্ঠার আউটপুটকে বাধাগ্রস্ত করে সার্ভারের একটি সরল পাঠ্য ফাইলটিতে প্রতিধ্বনিত হয়।
জ্যারেডমেকএটিয়ার

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