স্টাডাউট / স্টার্ডার এপাচি 2 লগ লিখছেন?


29

আমি একটি ডকারের পাত্রে অ্যাপাচি 2 চালাচ্ছি, এবং ডিস্কে কিছু লিখতে চাই না, স্টাডাউট এবং স্টডারকে লগ লিখি। আমি এটি করার কয়েকটি ভিন্ন উপায় দেখেছি ( সুপারভাইসর এবং স্টাডাউট / স্ট্ডার , স্টাডাউটে অ্যাপাচি অ্যাক্সেস লগ ) তবে এগুলি হ্যাকের মতো মনে হয়। ডিফল্টভাবে এটি করার কোনও উপায় নেই?

স্পষ্ট করে বলতে গেলে, আমি লগটি লেজ করতে চাই না, যেহেতু এর ফলে পাত্রে ডিস্কে জিনিস লেখা হবে।


আপনি কি সেই লগগুলি সমস্যা সমাধান / ডিবাগিং উদ্দেশ্যে সহজেই অ্যাক্সেসযোগ্য হতে চান না? পরিবর্তে কেবল তাদের (r) সিসলগ সার্ভারে কেন লিখবেন না?
HTTP500

@ এইচটিটিপি 500 - তারা ডকারের ধারকটির বাইরের অংশে বন্দী হন।
ম্যাট

আপনি যদি ব্যবহার করেন: পিএমএইচপি থেকে: 5.6-অ্যাপাচি, এতে ইতিমধ্যে স্টডআউট এবং স্টডারারের লগ অন্তর্ভুক্ত রয়েছে।
মার্টারলাক

উত্তর:


30
  ErrorLog /dev/stderr
  TransferLog /dev/stdout

আমাকে উবুন্টু এবং সেন্টোতে কাজ করে


কোন ফাইলের মধ্যে এটি হওয়া উচিত ইত্যাদি প্লিজ
আলেকজান্ডার মিলস

এটি আপনার domain.confফাইলের মধ্যে যায় বা .htaccessআপনি যদি একটি ব্যবহার না করে থাকেন conf
টাইলার খ্রিস্টান

25

অ্যাপাচি 2 প্যাকেজ ইনস্টল হওয়ার পরে এটি আপনার ডকফায়লে রাখার বিষয়ে কীভাবে?

RUN ln -sf /proc/self/fd/1 /var/log/apache2/access.log && \
    ln -sf /proc/self/fd/1 /var/log/apache2/error.log

ধরে নিচ্ছি যে এটি লগগুলির পথ। এটি উবুন্টু 14.04 এর জন্য এবং উবুন্টু 16.04 এর জন্যও কাজ করে।

দ্রষ্টব্য: আপনি যদি নিশ্চিত হন যে প্রতীকী লিঙ্কগুলি /dev/stdoutবা /proc/stderrসেখানে রয়েছে, তবে আপনি সেগুলিও ব্যবহার করতে পারেন। আমি এখানে উপস্থিত গ্যারান্টিযুক্ত হিসাবে আসল ফাইলের পাথটিকে পছন্দ করি।


উবুন্টু 16.04 :) এর সাথেও দুর্দান্ত কাজ করে :)
OkieOth

1
জঘন্য, এটি একটি উদ্ভাবনী হ্যাক! অ্যাপাচি একটি নিয়মিত ফাইল খোলার চেষ্টা করে, তবে নিজস্ব দৃষ্টিকোণ থেকে সিমলিংকের মাধ্যমে নিজস্ব স্টাডাউটে পুনঃনির্দেশিত হয়।
junas.fi

1
শুধু ধন্যবাদ বলতে চাই ... সরকারী অ্যাপাচি httpd 2.4 ডকারের ধারক এসএসএল সক্ষম করার পরে লগ লিখতে ব্যর্থ হয়েছে। এই লাইনগুলি + ssl_request_log যুক্ত করার সাথে ডকফেরফিল যা httpd2.4 থেকে টানা কাজ করে s
j.con

3
আপনি সংক্ষিপ্ত / proc / স্ব / fd / 1 হিসাবে / dev / stdout করতে পারেন। তারা ঠিক একই জিনিস।
চক অ্যাডামস

@ চকএডামস - এগুলি একটি নরম লিঙ্ক এবং সাধারণত সেখানে থাকে তবে তারা উপস্থিত চিত্রগুলি তৈরি করার সময় কোনও গ্যারান্টি নেই। বিশেষত মাইক্রো চিত্রগুলি কেটে ফেলুন। যেখানে কার্নেল সর্বদা / proc / স্ব / এফডি / 1 এবং 2 রফতানি করবে
ম্যাট

1

নির্দিষ্টভাবে কোনও উত্তরের জন্য জিজ্ঞাসা করা হয়নি তবে আপনার দৃশ্যের উপর নির্ভর করে আরও ভাল উপায়ে stdout / stderr এ লগইন করা উচিত নয়। কেবল JSON ফর্ম্যাটে লগগুলিকে বিড়ালের জন্য পাইপ করুন। এটি স্ট্রীমগুলির মধ্যে পার্থক্য করার প্রয়োজনীয়তা সরিয়ে ফেলবে কারণ জসনগুলি আলাদা করার জন্য এতে প্রয়োজনীয় ডেটা থাকতে পারে। উদাহরণস্বরূপ নীচের লাইন বরাবর কিছু। এর পরে গ্রেলেগ জাতীয় কিছুতে খুব সহজেই আটকানো যেতে পারে

GlobalLog "| cat - " gelf
ErrorLog "| cat - " 

LogFormat "{ \"apache_log\": \"ACCESS\", \"app_name\": \"apache\",  \"Connection\": \"%{X-Forwarded-Proto}i:%{X-Forwarded-Port}i \", \"X-Forwarded-For\": \"%{X-Forwarded-For}i\",  \"version\": \"1.1\", \"vhost\": \"%V\", \"short_message\": \"%r\", \"timestamp\": %{%s}t, \"level\": 6, \"user_agent\": \"%{User-Agent}i\", \"source_ip\": \"%a\", \"duration_usec\": %D, \"duration_sec\": %T, \"request_size_byte\": %O, \"http_status\": %s, \"http_request_path\": \"%U\", \"http_request\": \"%U%q\", \"http_method\": \"%m\", \"http_referer\": \"%{Referer}i\", \"X-Powered-By\": \"%{X-Powered-By}i\" }" gelf

ErrorLogFormat "{ \"app_name\": \"apache\",  \"apache_log\": \"ERROR\", \"time\":\"%{%Y-%m-%d}tT%{%T}t.%{msec_frac}tZ\", \"function\" : \"[%-m:%l]\" , \"process\" : \" [pid %P:tid %T] \" , \"message\" : \"%M\" ,\ \"referer\"\ : \" %{Referer}i \" }"

একটি জেল্ফ লগিং মডিউলও রয়েছে, তাই আপনি যদি চান তবে আপনি অ্যাপাচি থেকে একটি গ্রেলগ টাইপ সার্ভারে সরাসরি স্ট্রিম করতে পারেন

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