নথির ব্যর্থতার সমস্যা সমাধানের জন্য লগগুলির প্রয়োজন, তবে সম্পূর্ণ পাঠ্য লগ করার প্রয়োজন নেই।
অনুবাদ ব্যর্থতা সনাক্ত করতে লগ প্রয়োজন, কিন্তু সম্পূর্ণ চুক্তি, আইডি নম্বর বা ডাউনলোড টোকেন প্রিন্ট করার কোন প্রয়োজন নেই। লগের উত্তর দেওয়া উচিত "কোন কাজ, কোন ধাপে, এবং কেন এটি ব্যর্থ হয়েছে" এর পরিবর্তে একটি দ্বিতীয় নথি লাইব্রেরিতে অনুমতি ব্যবস্থাপনার অভাব রয়েছে।
নথি অনুবাদ ব্যর্থতার সমস্যা সমাধানের জন্য লগগুলির প্রয়োজন, কিন্তু লগগুলিতে চুক্তির সম্পূর্ণ পাঠ্য, আইডি নম্বর বা ডাউনলোড টোকেন থাকা দরকার নেই৷ এই নিবন্ধটি ব্যাখ্যা করে কিভাবে লগ উত্তর "কোন পদক্ষেপে ব্যর্থ হয়েছে এবং কেন" গ্রাহকের নথিগুলি লগে অনুলিপি না করে তৈরি করা যায়৷
উপযুক্ত পাঠক হল ডেভেলপার এবং অপারেশন এবং রক্ষণাবেক্ষণ কর্মী যারা নথি অনুবাদ পরিষেবা, ডকিং অনুবাদ ইন্টারফেস বা ব্যাকগ্রাউন্ড লগ বজায় রাখার জন্য দায়ী। পড়ার পরে, আপনি সাদাতালিকা ক্ষেত্রগুলির একটি সেট ডিজাইন করতে পারেন, যাচাই করতে পারেন যে লগটি আসল পাঠ্যটি বের করে আনে না, এবং সমস্যা সমাধানের জন্য ধরে রাখার সময় এবং অ্যাক্সেসের সুযোগ সেট করতে পারেন।
উদাহরণগুলি প্রক্রিয়াকরণ পদ্ধতি প্রদর্শনের জন্য সিন্থেটিক নমুনা ব্যবহার করে, এবং কোডটি একটি বিচ্ছিন্ন পরিবেশে পরীক্ষা করা হয়েছে, তবে এটি সমস্ত বাস্তব ফাইল বা পণ্যের কার্যকারিতার গ্যারান্টি উপস্থাপন করে না। গুরুত্বপূর্ণ নথিগুলি প্রক্রিয়া করার আগে, অনুগ্রহ করে মূলগুলি রাখুন এবং নীচের সীমানা এবং গ্রহণযোগ্য আইটেমগুলি অনুসারে সেগুলি পর্যালোচনা করুন৷
ট্রাবলশুটিং লগে কী রেকর্ড করা উচিত? এক বাক্যে উপসংহার
লগ শুধুমাত্র অনুমোদিত ক্ষেত্র যেমন টাস্ক আইডি, স্টেজ, ত্রুটি বিভাগ এবং সময় খরচ রেকর্ড করে, কিন্তু নথির বিষয়বস্তু এবং শংসাপত্র রেকর্ড করে না।
| আপনার অবস্থা | প্রস্তাবিত অভ্যাস | কারণ |
|---|---|---|
| কোন টাস্ক ব্যর্থ হয়েছে জানতে হবে | একটি এলোমেলো অভ্যন্তরীণ টাস্ক আইডি লগ করা হচ্ছে | ব্যবহারকারীর ফাইলের নাম বা পাথগুলি প্রকাশ না করে সমস্যাগুলি সনাক্ত করার ক্ষমতা |
| কার্ডটি কোন পর্যায়ে আছে তা নির্ধারণ করতে হবে | মঞ্চের নাম এবং নেওয়া সময় রেকর্ড করুন | প্রতিটি উত্স পাঠ্য এবং অনুবাদের প্রয়োজন নেই |
| অনুরোধ আপস্ট্রিম দ্বারা প্রত্যাখ্যান করা হয়েছে | সাধারণীকৃত ত্রুটি শ্রেণীতে লগ করুন | প্রমাণীকরণ প্রথম শ্রেণীর সম্পূর্ণ অনুরোধের বিষয়বস্তু লগে প্রবেশ করা উচিত নয় |
| সমস্যা সমাধানের জন্য মূলে ফিরে যেতে হবে | একটি নিয়ন্ত্রিত সিস্টেমের মধ্যে রেফারেন্স ব্যবহার করে | স্থায়ীভাবে সর্বজনীনভাবে ডাউনলোড করা যায় এমন লিঙ্কগুলি ফাঁস হওয়ার ঝুঁকিতে রয়েছে৷ |
রেকর্ড করার অনুমতি দেওয়া ক্ষেত্রগুলি দিয়ে শুরু করুন
কালো তালিকা সহজেই নতুন সংবেদনশীল ক্ষেত্র মিস করতে পারে। একটি আরও বিচক্ষণ পদ্ধতি হল শুধুমাত্র ডিজাইন করা ক্ষেত্রগুলিকে আউটপুট করা, উদাহরণস্বরূপ:
- অভ্যন্তরীণ টাস্ক আইডি
- প্রক্রিয়াকরণ পর্যায়
- ত্রুটি বিভাগ
- সময় সাপেক্ষ
নীচের সংশ্লেষণ উদাহরণটি একটি সাদাতালিকা অভিক্ষেপ ব্যবহার করে যাতে ইনপুটে সম্পূর্ণ পাঠ্য এবং টোকেনগুলি লগে প্রবেশ করা না হয়।
যাচাইকরণ লগ মূল লেখাটি বের করেনি।
import io
import json
import logging
ALLOWED = ("job_id", "stage", "error_code", "elapsed_ms")
def log_record(data):
return {key: data[key] for key in ALLOWED if key in data}
stream = io.StringIO()
logger = logging.getLogger("synthetic-document-job")
logger.handlers.clear()
logger.propagate = False
logger.setLevel(logging.INFO)
handler = logging.StreamHandler(stream)
logger.addHandler(handler)
event = {"job_id": "demo-12", "stage": "parse", "error_code": "BAD_CONTAINER",
"elapsed_ms": 42, "document_text": "synthetic confidential clause",
"access_token": "synthetic-secret"}
logger.info(json.dumps(log_record(event), sort_keys=True))
logged = json.loads(stream.getvalue())
assert logged["error_code"] == "BAD_CONTAINER"
assert "document_text" not in logged
assert "synthetic-secret" not in stream.getvalue()
assert set(logged) <= set(ALLOWED)
logger.removeHandler(handler)
উদাহরণ শুধুমাত্র স্ব-নামিত ডেমো লগার পরিবর্তন করে। বিজনেস লাইব্রেরিতে অ্যাপ্লিকেশন গ্লোবাল হ্যান্ডলার সাফ করার সুপারিশ করা হয় না। দৈর্ঘ্য এবং প্রকারের জন্য ক্ষেত্রের মানগুলি এখনও যাচাই করা দরকার। আপনি যদি error_code-এ ব্যবহারকারীর সম্পূর্ণ পাঠ্য স্টাফ করেন, তবে শুধুমাত্র সাদা তালিকার নাম আপনাকে সংরক্ষণ করবে না।
সংবেদনশীল কন্টেন্টের জায়গায় অ্যাসোসিয়েশন আইডি
নিম্নলিখিত সারণীতে সমস্যা সমাধানের সময় সাধারণ প্রয়োজনীয়তাগুলি তালিকাভুক্ত করা হয়েছে, সেইসাথে প্রস্তাবিত এবং অ-প্রস্তাবিত রেকর্ডগুলি।
| তদন্ত করা সমস্যা | সুপারিশকৃত রেকর্ড | রেকর্ড সুপারিশ করা হয় না |
|---|---|---|
| কোন কাজ ব্যর্থ হয়েছে | এলোমেলো অভ্যন্তরীণ টাস্ক আইডি | সম্পূর্ণ ব্যবহারকারীর ফাইলের নাম এবং পথ |
| কোন পর্যায়ে সময় লাগে? | পর্যায় এবং সময় সাপেক্ষ | প্রতিটি উৎস টেক্সট এবং অনুবাদ |
| উজানে প্রত্যাখ্যান কেন? | সাধারণীকৃত ত্রুটি বিভাগ | প্রমাণীকরণ শিরোনাম সহ সম্পূর্ণ অনুরোধ |
| কিভাবে মূল খুঁজে পেতে | নিয়ন্ত্রিত সিস্টেমের মধ্যে রেফারেন্স | স্থায়ীভাবে পাবলিক ডাউনলোড লিঙ্ক |
ধরে রাখার সময়কাল অ্যাক্সেস সুযোগের মতোই সমান গুরুত্বপূর্ণ
লগে কোনো টেক্সট না থাকলেও, কাজের সময়, ভাষা এবং ফাইলের আকারের সমন্বয় ব্যবসার তথ্য প্রকাশ করতে পারে। লগগুলি অ্যাক্সেস নিয়ন্ত্রণ, ধারণ সময়কাল এবং মুছে ফেলার পদ্ধতিগুলির সাথে থাকা উচিত।
সমস্যা সমাধানের সময়, অস্থায়ীভাবে লগ স্তর বৃদ্ধি করুন এবং দীর্ঘ সময়ের জন্য ডিবাগ মোডটি উত্পাদন পরিবেশে ছেড়ে যাওয়া এড়াতে কখন পুনরুদ্ধার করতে হবে তা পরিষ্কার করুন।
অনুবাদ ইন্টিগ্রেশনেও পরিষ্কার এবং সংযত লগ থাকতে পারে
OmniDoc (পণ্য পোর্টাল) এর সাথে সংযোগ করার সময়, আপনাকে শুধুমাত্র স্থানীয় কাজ এবং দূরবর্তী কাজগুলির মধ্যে সংযোগ রেকর্ড করতে হবে। সমস্যা সমাধানের সুবিধার জন্য ব্যবহারকারীদের দ্বারা আপলোড করা ফাইলগুলি লগে কপি করা উচিত নয়৷
একটি ভাল সমস্যা রিপোর্ট ব্যর্থতার পর্যায় এবং পুনরাবৃত্তি অবস্থা বর্ণনা করে, যখন গ্রাহক নথিগুলি শুধুমাত্র অনুমোদিত প্রক্রিয়াকরণ পাথে প্রবাহিত থাকে।
তথ্যসূত্র: Python logging.
📊 মূল তুলনা
| পথ | সুবিধা | ঝুঁকি |
|---|---|---|
| কালো তালিকা | লেখার পদ্ধতি সহজবোধ্য এবং ব্যবহার করা সহজ। | নতুন সংবেদনশীল ক্ষেত্রগুলি মিস করা সহজ |
| সাদা তালিকা | শুধুমাত্র পরিষ্কার সীমানা সহ পরিকল্পিত ক্ষেত্রগুলি আউটপুট করুন | ক্ষেত্রগুলিকে আগে থেকেই পরিকল্পনা করতে হবে এবং ক্ষেত্রের মানগুলির দৈর্ঘ্য এবং ধরন যাচাই করতে হবে |
🎯 কোন পদ্ধতি আপনার জন্য উপযুক্ত?
আপনি যদি একটি অনুবাদ টাস্ক সনাক্ত করতে চান
র্যান্ডম অভ্যন্তরীণ টাস্ক আইডি এবং ব্যর্থতার পর্যায়গুলি লগ করা, সম্পূর্ণ ব্যবহারকারীর ফাইলের নাম বা পাথগুলি লগ করা না।
আপনি যদি আপস্ট্রিম ইন্টারফেস দ্বারা রিপোর্ট করা ত্রুটিগুলি পরিচালনা করতে চান
নর্মালাইজড এরর ক্লাসগুলি লগিং করা, প্রমাণীকরণ হেডারের সাথে সম্পূর্ণ অনুরোধগুলি লগ করা নয়৷
আপনি যদি অনলাইন সমস্যার সমাধান করছেন
অস্থায়ীভাবে লগ স্তর বৃদ্ধি করুন এবং সমস্যা সমাধানের পরে অবিলম্বে পুনরুদ্ধার করুন।
আপনি যদি লগ ফিল্ড ডিজাইন করতে চান
হোয়াইটলিস্টিং পছন্দ করুন এবং ক্ষেত্রের মানগুলির দৈর্ঘ্য এবং প্রকার যাচাই করুন।
❓ প্রায়শই জিজ্ঞাসিত প্রশ্ন (FAQ)
1. ব্যবহারকারীর সম্পূর্ণ ফাইলের নাম কি লগে রেকর্ড করা যাবে?
সুপারিশ করা হয় না. সম্পূর্ণ ফাইলের নাম এবং পথ রেকর্ড করার সুপারিশ করা হয় না, এবং এর পরিবর্তে র্যান্ডম অভ্যন্তরীণ টাস্ক আইডি পারস্পরিক সম্পর্ক ব্যবহার করা যেতে পারে।
2. কেন সংবেদনশীল ক্ষেত্রগুলি ফিল্টার করতে কালো তালিকা ব্যবহার করার পরামর্শ দেওয়া হয় না?
ব্ল্যাকলিস্ট সহজেই নতুন আবির্ভূত সংবেদনশীল ক্ষেত্রগুলিকে মিস করে, যখন সাদা তালিকা শুধুমাত্র ডিজাইন করা ক্ষেত্রগুলিকে আউটপুট করে, যা আরও সুরক্ষিত।
3. শুধুমাত্র টাস্ক টাইম এবং ফাইল সাইজ ম্যানেজ করতে হবে?
প্রয়োজন এই তথ্যের সংমিশ্রণটি ব্যবসার তথ্যও প্রকাশ করতে পারে এবং লগগুলি অ্যাক্সেস নিয়ন্ত্রণ, ধরে রাখার সময়কাল এবং মুছে ফেলার পদ্ধতিগুলির সাথে থাকা উচিত৷
4. সমস্যা সমাধানের সময় ডিবাগিং লগগুলি দীর্ঘ সময়ের জন্য চালু করা যেতে পারে?
সুপারিশ করা হয় না. লগ লেভেল সাময়িকভাবে বাড়ানোর পরে, দীর্ঘ সময়ের জন্য প্রোডাকশন পরিবেশে ডিবাগ মোড ছেড়ে যাওয়া এড়াতে কখন এটি পুনরুদ্ধার করতে হবে তা জানতে হবে।
5. বিজনেস লাইব্রেরিতে কি গ্লোবাল হ্যান্ডলার সাফ করা যায়?
সুপারিশ করা হয় না. উদাহরণটি শুধুমাত্র স্ব-নামিত ডেমো লগারকে সংশোধন করে, এবং অ্যাপ্লিকেশন গ্লোবাল হ্যান্ডলারটি ব্যবসায়িক লাইব্রেরিতে সাফ করা উচিত নয়।
📝 সারাংশ
অনুবাদ ব্যর্থতার সমস্যা সমাধানের সময়, লগগুলি নথির সামগ্রী সংরক্ষণের পরিবর্তে কার্য, পর্যায় এবং কারণগুলির উত্তর দেওয়া উচিত। সমস্যা সমাধানের কার্যকারিতা এবং নথির নিরাপত্তার ভারসাম্য বজায় রাখতে হোয়াইটলিস্ট ক্ষেত্র, নিয়ন্ত্রিত রেফারেন্স এবং পরিষ্কার ধারণ সময় ব্যবহার করুন।
এটি এখনই চেষ্টা করুন: অনুবাদ শুরু করতে নথিটি আপলোড করুন, মূল বিন্যাস বজায় রেখে৷


