উত্পাদনে ব্যবহারকারীর ক্রিয়া লগ করার জন্য সেরা অনুশীলন


22

আমি আমার উত্পাদন পরিবেশে বিভিন্ন স্টাফ প্রচুর লগ ইন করার পরিকল্পনা করছিলাম, যখন ব্যবহারকারী যখন:

  • লগ ইন, লগ অফ
  • প্রোফাইল পরিবর্তন করুন
  • অ্যাকাউন্ট সেটিংস সম্পাদনা করুন
  • পাসওয়ার্ড পরিবর্তন করুন ... ইত্যাদি

একটি উত্পাদন viর্ষা সম্পর্কে এটি করা কি একটি ভাল অনুশীলন? এছাড়াও এই সমস্ত লগ ইন করার একটি ভাল উপায় কি। আমি বর্তমানে লগ ইন করতে নিম্নলিখিত কোড ব্লকটি ব্যবহার করছি:

public void LogMessageToFile(string msg)
        {

            System.IO.StreamWriter sw = System.IO.File.AppendText(
                GetTempPath() + @"MyLogFile.txt");
            try
            {
                string logLine = System.String.Format(
                    "{0:G}: {1}.", System.DateTime.Now, msg);
                sw.WriteLine(logLine);
            }
            finally
            {
                sw.Close();
            }
        }

এটি কি উত্পাদনের জন্য ঠিক থাকবে? আমার অ্যাপ্লিকেশনটি খুব নতুন তাই আমি এখনই লক্ষ লক্ষ ব্যবহারকারী বা অন্য কোনও কিছুর প্রত্যাশা করছি না, কোনও ওয়েবসাইটে ক্রিয়াকলাপের উপর নজর রাখার সর্বোত্তম অনুশীলনগুলির সন্ধান করছেন বা যদি এটি এমনকি সর্বোত্তম অনুশীলনও হয়।


1
আমি সম্ভবত Databaseএকটি পাঠ্য ফাইলের

@ ডেভজাইচ: লগিংয়ের উদ্দেশ্যটির উপর নির্ভর করে। ত্রুটি ট্র্যাকিং / ট্রেসিং যদি সেই উদ্দেশ্যটির কোনও অংশ থাকে তবে ডেটাবেস আউট। প্রোগ্রামার্স.সটাকেক্সচেঞ্জ
জিজ্ঞাসা / ৯২১৮86/২

আমি এর একটি বেসিক বাস্তবায়ন করেছি a User Activity Logger that hooks up various events, আপনি এটি এখানে দেখতে পাবেন: stackoverflow.com/questions/30326673/… । উপভোগ করুন!
জেরেমি থম্পসন

উত্তর:


30

এটি প্রশ্নের সরাসরি উত্তর নয়, এটির আরও প্রসারণ।

আপনি যখন নতুন অ্যাপ্লিকেশন চালু করেন আমি ব্যবহারকারী যা কিছু করে তা লগ করার পরামর্শ দিই : লগ ইন, লগ আউট, তাদের একটি **, সমস্ত কিছু স্ক্র্যাচ করে। যদি এটি ওয়েব-ভিত্তিক হয় তবে তাপের মানচিত্রগুলি ব্যবহার করার বিষয়টি বিবেচনা করুন যাতে আপনি জানেন যে তাদের মাউস কী করছে।

' S০ এর দশকের শেষের দিকে আমি যখন জেরক্সে ব্র্যাভাক্স প্রজেক্টে ছিলাম তখন ব্যবহারকারীরা কীভাবে ডাব্লুওয়াইএসআইডাব্লুআইজি সম্পাদক নামক এই অদ্ভুত জিনিসটি ব্যবহার করতে পারে তা নির্ধারণ করার জন্য আমরা পিক্সেল-বাই-পিক্সেল মাউস গতিবিধি রেকর্ড করেছি। আমরা লাঞ্চের সময় ব্যবহারকারীর সেশনগুলির প্লেব্যাকগুলি দেখতাম watch এটি অত্যন্ত শিক্ষামূলক ছিল । আমরা চার্লি ব্রাউনিং নামে একটি ব্যবহারের ধরণটি আবিষ্কার করেছি — ব্যবহারকারী কিছু পাঠ্য নির্বাচন করে এটি তাত্পর্যপূর্ণ করে তুলবে ... তারপরে তারা পূর্বাবস্থায় ফিরে যাবে ... তারপরে তারা আবার ... পিছন পিছন পিছনে ফিরে যাবে। দেখা যাচ্ছে তারা আধ্যাত্মিক স্তরে এই জিনিসগুলি বোঝার চেষ্টা করছেন। সুতরাং আমরা (গ্রেগ কুশনিক কোডটি করেছিলেন, যদি মেমরিটি পরিবেশন করে) ঠিক এই আচরণটি সমর্থন করার জন্য কিছু নির্দিষ্ট অনুকূলতা তৈরি করে ations

রেকর্ডিং ছাড়া আমরা কখনই এটি করার চিন্তা করতাম না।


1
আপনি একা এই মন্তব্য কেন্দ্রিক একটি বই লিখতে পারে!
বিশপ

এই নির্দিষ্ট ধরণের লগইনটি রিয়েল-টাইম ব্যবহারকারীর অভিজ্ঞতা সম্পর্কে ছিল, তাই আমি লেখক হব না। আমি মিঃ হার্ডকপি ছিলাম। যখন আপনি আঘাত Print আমি নথির অভ্যন্তরীণ উপস্থাপনা নিল না, নিচ্ছে একটি পৃষ্ঠায় বিবরণ ভাষা রূপান্তরিত হয়, তাহলে এই অদ্ভুত জিনিস নামক উপর প্রেরণ ইথারনেট বিশ্বের প্রথম লেজার প্রিন্টার, যা শুধু হলের নিচে ছিল। আমি যে গ্রুপগুলির সাথে সর্বাধিক যোগাযোগ করেছি সেগুলি হ'ল মার্কিন সেনেট টাইপোগ্রাফি বিভাগ এবং আইএমএফের মুদ্রণ গোষ্ঠী, আমাদের সেরা, সর্বাধিক চাহিদাযুক্ত বিটা টেস্ট সাইটগুলির মধ্যে 2। আমি এই লোকগুলির কাছ থেকে লেআউট, ফন্ট ইত্যাদির বিষয়ে অনেক কিছু শিখেছি । গুড টাইমস
পিটার রোয়েল

9

আমি যদি আপনি ছিলাম এবং আমি কোনও টেক্সট ফাইলে লেখার সাথে আঁকছি আমি লগ 4 নেট ব্যবহার করব এবং একটি নির্দিষ্ট "ইউজারএকশন.লগ" ফাইলটিতে লগইন করব। এইভাবে এটি আপনার সাধারণ লগিংকে বিশৃঙ্খলা করে না। লগ 4 নেট (বা অন্য কোনও লগিং ফ্রেমওয়ার্ক) ব্যবহার করে আপনি চাকা এবং লিভারেজ রোলিং ফাইল অ্যাপেন্ডারগুলিকে পুনরায় উদ্ভাবন, সতর্কতা / ত্রুটি / ডিবাগ / ইনফরম কোড, ব্যাচ ফাইল রাইটিং ইত্যাদি এড়াতে পারবেন ভাল লগ ইন করার জন্য এটি সর্বদা একটি ভাল ধারণা build কোন উত্পাদন স্তর অ্যাপ্লিকেশন।

বাস্তবে বাস্তবে, এই সমস্ত তথ্য একটি ডাটাবেসে সংরক্ষণ করা ভাল। একটি ডাটাবেস ব্যবহার করা আপনাকে এটিকে বাছাই করতে, এগ্রিগেট করতে এবং এর উপর পরিসংখ্যানকে আরও সহজ করতে দেয়


3
তুমি তোমার পিষ্টক আছে এবং এটি খেতে পারেন: সেখানে log4net একটি DatabaseAppender এর logging.apache.org/log4net/release/config-examples.html । তবে আপনি যদি পারফরম্যান্স সম্পর্কে উদ্বিগ্ন হন তবে আপনি ফাইলগুলিতে লগ ইন করতে এবং দ্রুত রিপোর্টিংয়ের জন্য ডেটা প্রিপিং করে (যা একটি রিপোর্ট ডাটাবেস হতে পারে) আলাদা আলাদা পরিষেবাতে পার্স করতে পারেন।
হতাশার গ্র্যামেস

9

লগ ফাইলগুলি ডিবাগিং সিস্টেমের ত্রুটিগুলির জন্য তথ্য পেতে 1 ব্যবহৃত হয়। 2. দুষ্টামির জন্য ব্যবহারকারীর ক্রিয়াকলাপ গবেষণা করতে, বা ৩ আপনি বুঝতে পারবেন না লোকেরা কীভাবে সিস্টেমটি ব্যবহার করে তা বুঝতে। এটি মাথায় রেখে:

  • অ্যাপ্লিকেশন প্রারম্ভের সময় লগ এনভায়রনমেন্ট (যেমন এনভায়রনমেন্ট ওয়ার্স, অন্যান্য সেটিংস ইত্যাদি)। এটি ডিবাগিং সমস্যাগুলির জন্য সহায়ক।
  • প্রতিটি অনুরোধের জন্য ব্যবহারকারী এবং ক্রিয়া (URL এর স্বতন্ত্র অংশ) লগ করুন।
  • প্রতিটি অনুরোধের জন্য সমস্ত পরামিতি লগ ইন করুন পাসওয়ার্ডগুলি ছাড়াই । আমি লগগুলিতে প্রতিটি প্যারামিটারের চারপাশে ডিলিমিটার স্থাপন করতে চাই phone{(999)999-9999} email{aaa@aaa.com}। পাসওয়ার্ডগুলি এক উপায়ে ডাটাবেস ব্যতীত আর কোথাও লেখা উচিত নয় , প্রতিটি ব্যবহারকারীর জন্য অনন্য লবণের সাথে ক্রিপ্টোগ্রাফিকভাবে সুরক্ষিত হ্যাশ ফাংশন এবং হ্যাশিংয়ের একাধিক রাউন্ড (পাদটীকা দেখুন)
  • লগ ইন করার সময়, আপনার ব্যবহারকারীর আইপি ঠিকানা, ব্যবহারকারীর আইডি, নাম, ব্যর্থ লগইনের গণনা, সম্ভবত ব্রাউজার, সম্ভবত কুকি সেশন আইডি, তবে কখনও পাসওয়ার্ড লগইন করা উচিত।
  • লগইন পৃষ্ঠায় এবং পরিবর্তন-পাসওয়ার্ড পৃষ্ঠায় পাসওয়ার্ড লগ না করার কথা মনে রাখবেন , বা আপনার যদি সেই কার্যকারিতা থাকে তবে আপনার গোপন প্রশ্ন বা উত্তরটি প্রবেশ করা উচিত নয়। অন্য কোনও পাসওয়ার্ড বা এনক্রিপশন কীগুলি অবশ্যই লগ করা উচিত নয়। এই পরামিতিগুলির জন্য লগটিতে ছয় তারার মতো কিছু লেখা ভাল অনুশীলন যাতে আপনি দেখতে পান যে আপনি এই ডেটাটি দমন করতে ভুলে গিয়েছেন।
  • আমি প্রতিটি অনুরোধটি করতে মোট সময় লাগতে লগ করতে চাই: Done: 49ms
  • আমি সেশন স্থিতিতে পরিবর্তনগুলি লগ করতে চাই। এগুলি বিরল হওয়া উচিত।
  • অন্যরা যেমন বলেছে, ফাইলগুলিতে লগ করার জন্য এখানে দুর্দান্ত লগিং গ্রন্থাগার রয়েছে, ডাটাবেসে লগ করার বিষয়ে নিশ্চিত নয়।
  • সুরক্ষিতভাবে লগগুলি সঞ্চয় করুন। এমনকি পাসওয়ার্ড ছাড়াও ব্যক্তিগতভাবে সনাক্তকরণযোগ্য তথ্য ( নিরাপদ হারবার দেখুন ) সম্পর্কিত লগ ডেটাকে গোপনীয় করে তোলার বিষয়ে রাষ্ট্রীয়, ফেডারেল এবং আন্তর্জাতিক আইন রয়েছে ।
  • ব্যাকআপ নিন। যদি আপনি তাদের প্রতি রাতে একটি ফুল-ড্রাইভ ব্যাকআপে প্রবাহিত হতে দেন তবে নতুন সার্ভারে আপগ্রেড করার আগে অন্য কোথাও তাদের ব্যাকআপ দেওয়ার কথা মনে রাখবেন (আমি এটি কীভাবে শিখেছি তা জিজ্ঞাসা করবেন না)।

অন্যান্য টিপস

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


2

আপনি কোনও ডাটাবেস ব্যবহার করছেন কিনা তা আপনি নির্দিষ্ট করেন না তবে আপনি যদি হন এবং সেই ডাটাবেসটি এসকিউএল সার্ভার হয়, তবে আপনি অটো অডিট নামে কিছু যুক্ত করতে পারেন এবং আপনার ডেটা দিয়ে সমস্ত ইন্টারঅ্যাকশন স্বয়ংক্রিয়ভাবে লগ করতে পারেন । আপনার নিরীক্ষণ করা কেবলমাত্র সেগুলিই নির্দিষ্ট করতে নিশ্চিত করুন।

তবে যাইহোক, আমি নিজের ট্র্যাকিংটিকে ম্যানুয়ালি কোড করার চেষ্টা করব না কারণ এটি রক্ষণাবেক্ষণের দুঃস্বপ্নের অবসান ঘটাবে।

এছাড়াও, লগিংয়ের জন্য, আপনার নিজস্ব রোল করবেন না, এন্টারপ্রাইজ লাইব্রেরি লগিং বা লগ 4 নেট বা অনুরূপ ব্যবহার করুন।


2

শুধু একটি সাধারণ পরামর্শ। আপনার প্রশ্নের সাথে সরাসরি সম্পর্কিত নাও হতে পারে।

এটি নির্ভর করে আপনি কীসের জন্য লগ ব্যবহার করতে যাচ্ছেন? বেশিরভাগ লগগুলি ত্রুটিগুলির কারণ হিসাবে চিহ্নিত অপারেশনগুলি সনাক্ত করতে উত্পাদনে ব্যবহৃত হয়। আপনি যদি এগুলি ব্যবহারকারীর ক্রিয়াগুলি অনুসরণ করার জন্য রাখেন তবে তা লগের অংশ নয়। এটি অবশ্যই পণ্যটির সার্ভার সাইড বৈশিষ্ট্য। এই বিষয়গুলি অবশ্যই পরবর্তী গবেষণার জন্য ডাটাবেসে যেতে হবে। তবে সার্ভারের পাশের লগগুলি যেমন, "কিছু পাঠ্য খালি থাকায় ত্রুটি ঘটেছে", এটি বৈশিষ্ট্যের অংশ নয়। এই জিনিসগুলি ফাইল সিস্টেমে যাওয়া দরকার। তাদের অবশ্যই তাদের সাথে নিম্নলিখিত বিষয়বস্তু থাকতে হবে: - ব্যবহারকারীর_আইডি, ত্রুটি_সংখ্যার, ত্রুটি_পাঠন, ফাইল_নাম, ফাংশন_নাম, থ্রেড_আইডি, সিস্টেম_সামান্য_কাল, এবং অন্য কোনও প্রসঙ্গ।

এখন আমি কেবল ফাইলগুলিতে লগ সম্পর্কে কথা বলছি।

1) তাদের অবিচ্ছিন্ন রাখুন। আই / ও অপারেশন ব্যয়বহুল।

2) ফাংশন চেয়ে ক্লাস হিসাবে তাদের নকশা। ভবিষ্যতের পরিবর্তনগুলি সহজ হবে।

৩) তাদের সম্ভব হলে সিঙ্গলটন রাখুন। একক একাধিক থ্রেডে কঠিন, তাই সঠিকভাবে ডিজাইন করুন।

৪) লগার এবং লগির মধ্যে মিথস্ক্রিয়াটিকে সহজ রাখার জন্য আরও ভাল। বেশিরভাগ সময় প্রকৃত বার্তা_পাঠ্যের চেয়ে বার্তা_ সংখ্যাটি প্রেরণ করুন এবং লগারটি নম্বরটি থেকে বার্তাটি পেতে দিন। পরে যদি আমরা জেনেরিক লগ ফর্ম্যাটগুলিতে পরিবর্তন করতে চাই তবে এটি সহায়তা করবে।

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


1

লগ 4 নেট চেষ্টা করুন.এটি আপনাকে ফাইল বা ডাটাবেসে লগ ইন করতে দেয়। এখানে টিউটোরিয়াল !

আমরা আমাদের সমস্ত প্রকল্পে লগ 4 নেট ব্যবহার করি।


0

একটি লগ ফাইল ব্যবহার করে বেশ কয়েকটি সমস্যা উপস্থাপিত হয়। একাধিক প্রক্রিয়া ফাইল অ্যাক্সেস করার চেষ্টা করলে প্রথমে আপনি ত্রুটি পেতে পারেন। আপনার সিস্টেমটি চলাকালীন ফাইলটি চক্র করা বা সাফ করার চেষ্টা করার সময় আপনিও সমস্যা পেতে পারেন। চারপাশে উপায় একটি ডাটাবেস ব্যবহার করা হয়।

সুতরাং, পদক্ষেপ 1 হ'ল একটি ডাটাবেস টেবিল তৈরি করা। আমি নিম্নলিখিত ক্ষেত্রগুলির পরামর্শ দিচ্ছি:
* ইউজারআইডি
* ক্রিয়া (যেমন লগন, ফু মুছুন)
* কিছু বর্ণনামূলক পাঠ্য (এখানে নালার অনুমতি দিন)
* টাইমস্ট্যাম্প

পদক্ষেপ 2, ইউজারআইডি, ক্রিয়া এবং বর্ণনামূলক পাঠ্যের জন্য ইনপুট সহ একটি সঞ্চিত পদ্ধতি তৈরি করুন। টাইম স্ট্যাম্প তৈরি করতে কেবলমাত্র বর্তমান সময়টি ব্যবহার করুন।

পদক্ষেপ 3, একটি সুবিধাজনক শেয়ার্ড লাইব্রেরিতে একটি লগিং পদ্ধতি লিখুন যাতে এটি সর্বত্র অন্তর্ভুক্ত করা সহজ হয় এবং প্রয়োজনীয়ভাবে সেই পদ্ধতিটি কল করার অভ্যাসে প্রবেশ করুন। আপনি লগইন স্তরের পতাকা যুক্তি যুক্ত করতে চাইলে লগডটি পরিবর্তন করতে পারেন।

পদক্ষেপ 4, সময়ে সময়ে লগিং টেবিল থেকে পুরানো বার্তা মুছে ফেলার জন্য একটি রক্ষণাবেক্ষণের রুটিন তৈরি করুন। এক্স এর চেয়ে বেশি বয়সী হলে সম্ভবত মুছে ফেলুন, প্রতি সপ্তাহে চালান বা নিয়মিত ডিবি রক্ষণাবেক্ষণের অংশ হিসাবে (সূচক পুনর্নির্মাণ, ইত্যাদি)।

একবার আপনি এটি তৈরি করে নিলে আপনার অন্যান্য প্রকল্পের সাথে জড়িত কোডটি ব্যবহার করতে সক্ষম হওয়া উচিত।

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