(সি ++) গেমসের জন্য লগইন লাইব্রেরি [বন্ধ]


15

আমি প্রচুর লগিং লাইব্রেরি জানি কিন্তু সেগুলির অনেকগুলি পরীক্ষা করিনি। (গুগললগ, পান্থিয়োসস, আগত উত্সাহ :: লগ লাইব্রেরি ...)

গেমগুলিতে, বিশেষত দূরবর্তী মাল্টিপ্লেয়ার এবং মাল্টিথ্রেডেড গেমগুলিতে, লগিং ডিবাগিংয়ের জন্য অতীব গুরুত্বপূর্ণ, এমনকি যদি আপনি শেষ পর্যন্ত সমস্ত লগ সরিয়ে ফেলেন।

ধরা যাক আমি একটি পিসি গেম তৈরি করছি (কনসোল নয়) যা লগগুলির প্রয়োজন (মাল্টিপ্লেয়ার এবং মাল্টিথ্রেডেড এবং / বা মাল্টিপ্রসেস) এবং লগিংয়ের জন্য আমার একটি লাইব্রেরি সন্ধান করার উপযুক্ত কারণ রয়েছে (যেমন, আমার সময় নেই বা আমি নেই আমার ক্ষেত্রে সঠিকভাবে একটি লেখার ক্ষমতায় আত্মবিশ্বাসী নয়)।

ধরে নিচ্ছি যে আমার দরকার:

  1. কর্মক্ষমতা
  2. ব্যবহারের সহজতা (স্ট্রিমিং বা ফর্ম্যাটিং বা এরকম কিছু করার অনুমতি দিন)
  3. নির্ভরযোগ্য (ফাঁস বা ক্রাশ করবেন না!)
  4. ক্রস প্ল্যাটফর্ম (কমপক্ষে উইন্ডোজ, ম্যাকসএক্স, লিনাক্স / উবুন্টু)

আপনি কি পুনরায় চাও?

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

গেমগুলি প্রায়শই ডিবাগ করার সময় জটিলতার দাবিতে থাকে তাই লগিংয়ের পাঠাগারগুলি জানা ভাল হবে যে আমাদের নির্দিষ্ট ক্ষেত্রে, সুস্পষ্ট সুবিধা রয়েছে।


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

এটা ঠিক, তবে আমি ধরেই নিয়েছিলাম যে একটি "সম্পূর্ণ" লগিং সমাধান ব্যবহারকারীদের আপনার বর্ণনার মতো বিভিন্ন ধরণের লগ সেটআপ করতে দেয়। আপনি যদি প্রশ্নের যথাযথতাটিকে গুরুত্বপূর্ণ মনে করেন তবে দয়া করে আমার অতিথি হয়ে প্রশ্নটিতে এটি যুক্ত করুন।
ক্লাইম

উত্তর:


8

সকেট ব্যবহার করে লগ করুন (যে কোনও সকেটের মোড়ক যথেষ্ট করতে পারে) + ওয়েব ব্রাউজার ওয়েবসকেট => সর্বাধিক বহুমুখী, আপত্তিজনক লগিং সরঞ্জাম সম্ভব, ডিবাগিংয়ের কয়েক ঘন্টা অর্জন করবে এবং চোখের ঘা এড়াবে।

  • asyncrhonous (গতি ব্রাউজারে সমস্ত কাজকে পিছিয়ে দেয়)
  • ফর্ম্যাট করা (রঙ, আকার ইত্যাদি ..)
  • নির্ভরযোগ্য (সকেট ...)
  • ক্রস প্ল্যাটফর্ম (ব্রাউজার)

এখন, বোনাস:

  • ডায়নামিক ফিল্টারিং খুব সহজেই সম্পন্ন হয়েছে (প্রয়োজন হলে জাভাস্ক্রিপ্ট রেজেক্স ব্যবহার করে)
  • লগের ইতিহাস, মেমরি এবং তুলনা ("ইন ব্রাউজার" ডাটাবেসে HTML5 স্পেস) সহ
  • যেকোন ডেটা (এসভিজি, বা ক্যানভাস বা কোনও কিছু ব্যবহার করে) যেমন মেমরি , মেমরির খণ্ডন ইত্যাদির কিছু গ্রাফ তৈরির সহজ উপায় ...
  • কোনও ডেটার 2 ডি গ্রাফ তৈরি করার সহজ উপায় ( কেডি-ট্রি মহকুমা ? সম্ভাব্য ক্ষেত্র? অথবা এমনকি কেবল একটি ভেরিয়েবল মানের প্রকরণ? ইত্যাদি ...)
  • দূরবর্তী লগিং (ব্রাউজার অন্যান্য কম্পিউটার ব্যবহার করে) অনুমতি দেয়
  • ব্রাউজার স্টোরেজে এইচটিএমএল 5 ব্যবহার করে, আপনি লগ সেশন প্যারামিটারগুলি (বর্তমান লগ ফিল্টারগুলি, ইত্যাদি .. এবং প্রতিটিটিতে নোট) সংরক্ষণ করতে পারেন
  • শুধুমাত্র একটি ক্লিকের মাধ্যমে বাগ রিপোর্ট তৈরি বা ট্র্যাকের টিকিটগুলি লিঙ্ক করা খুব সহজ
  • একটি টাইমলাইন গুই সহ সহজেই লগইন রিওয়াইন্ড করার ক্ষমতা

এবং লগিংয়ের বাইরে আরও অনেক কাজ:

  • প্রোফাইলার তথ্য (গ্রাফ ...) অনুমতি দেয়
  • এমনকি কনসোল হিসাবে কাজ করতে পারে (ব্রাউজার থেকে কমান্ড প্রেরণ করুন) এমনকি কিছু জিএমআই বা এমনকি ফ্ল্যাশ ইউআই ব্যবহার করে দ্রুত জিইআই দিয়েও U
  • ব্রাউজারে চিত্রের পার্থক্য রয়েছে (সকেট ব্যবহার করে চিত্র পাঠান, এবং ক্যানভাস চিত্র পিক্সেল ক্ষমতা ব্যবহার করে ব্রাউজারে তুলনা করুন)
  • ইত্যাদি ...

(উপরের প্রায় সবগুলি ফ্ল্যাশ সকেট ব্যবহার করে করা যেতে পারে, ডাটাবেস ক্ষমতা সংরক্ষণ করুন)

এখন আমি জানি জিনিসটি সেট আপ করতে এটি বেশ দীর্ঘ মনে হচ্ছে। তবে হার্ড ডিবাগিং পরিস্থিতি সহ (যেমন গেমসে)) লম্বা প্রকল্পে এটি সত্যই সময়ের ব্যয় gers

দ্রষ্টব্য 1: গেম নেটওয়ার্কিং কোডটি ডিবাগ করার সময় একমাত্র ডাউনসাইড => ডাবল-চেক সাইড এফেক্ট (সকেট বাফার আকার, বিলম্ব, ব্যান্ডউইথ ইত্যাদির উপর প্রভাব ...)

দ্রষ্টব্য 2: কিছু ব্রোজার সুরক্ষার কারণে ডিফল্ট ওয়েবসকেট দ্বারা নিষ্ক্রিয় করা হয়েছে, এটি সক্ষম করে তা নিশ্চিত করার জন্য কনফিগার করুন:


1
আমি ভুল হলে আমাকে সংশোধন করুন, তবে এটি কেবলমাত্র কোথায় লগিং আউটপুটকে ডাইরেক্ট করতে হবে তা নির্দেশ করে? একটি আসল লগিং লাইব্রেরি সংকলন-সময়ে ফিল্টারিং (যা পারফরম্যান্স কোনও সমস্যা হলে তা গুরুত্বপূর্ণ), বিন্যাসকরণ এবং লগ বার্তা তৈরির জন্য সহজেই ব্যবহারযোগ্য সিনট্যাক্স সরবরাহ করতে পারে।
sbi

@sbi এটি অ্যাপ্লিকেশন পক্ষের একটি বৈশ্বিক চালু বা বন্ধ জিনিস। "ব্রাউজার লগ ক্লায়েন্ট" ফিল্টারিং, সিনট্যাক্স করে তবে এটি সর্বদা সমস্ত লগ পায়। এটি র‌্যাডিক্যাল, তবে এটি অভিজ্ঞতার উপর ভিত্তি করে যে দেবের সময় আপনার সর্বদা সমস্ত কিছু লগ করা উচিত যাতে আপনি যে কোনও বাগ আটকে যায় তা সহজেই পুনরুত্পাদন করতে পারে। আপনার যদি অপ্টিমাইজ করতে হয় তবে এটি আবার ব্রাউজারের দিক থেকে: সকেট ব্যবহার করে আপনি স্ট্রিং ব্যবহার করে লগ করতে বাধ্য নন, আপনি সরাসরি বাইনারি ডেটা (আইডি + ফ্লোটস) লগ করতে পারেন যা অন্য স্ট্রিং ভিত্তিক লগ লিবের চেয়ে সাহসী দ্রুত ... স্ট্রিং ব্রাউজারের সাথে আইডি মিলছে ...)
তুয়ান কুরানেস

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

@ এসবিআই: বেঞ্চমার্কের প্রয়োজন হতে পারে তবে সর্বোত্তম লগিং গ্রন্থাগার এমনকি সর্বনিম্ন লগিং স্তরে এমনকি আপনার বাইনারি লগারের চেয়ে বেশি ব্যয় করতে হবে যা সমস্ত কিছু লগ করে। এমনকি সিপিইউ সাইকেল নষ্ট করার জন্য একটিমাত্র "বাইনারি টু চর" নেই ... সুতরাং এটি সত্যিই আরও বৈশিষ্ট্য এবং আরও বেশি পারফরম্যান্স।
টুয়ান কুরানেস

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

8

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

লাইব্রেরিতে সম্প্রতি খুব বেশি কিছু করা হয়নি, এবং এসও-তে থাকা অন্যরা ট্রাঙ্কের কিছু অংশের অভাব খুঁজে পেয়েছেন, তবে একটি সংস্থায় আমি কাজ করতাম আমরা লোকটিকে বেশ সাড়া জাগিয়েছি, এবং আমার এক তৎকালীন গরু-শ্রমিককেও পেয়েছি প্রতিশ্রুতিবদ্ধ অ্যাক্সেস পেয়েছে এবং এতে কিছু কোড যুক্ত করেছে, যাতে আপনি এটি কোনও শটের জন্য মূল্য খুঁজে পেতে পারেন।

আপনার প্রয়োজনীয়তা গণনা করতে:

কর্মক্ষমতা

সেরা আমি খুঁজে পেয়েছি। বিশেষত সংকলন সময়ে লগ বার্তাগুলি বাদ দেওয়ার এবং সংকলকগুলি সম্পূর্ণরূপে মুছে ফেলার জন্য তার ক্ষমতা খুব আবেদনময়ী ছিল।

ব্যবহারের সহজতা (স্ট্রিমিং বা ফর্ম্যাটিং বা এরকম কিছু করার অনুমতি দিন)

আপনি যখন কোনও ভুল করেন তখন টেমপ্লেটস-মেটা স্টাফগুলির ধ্রুপদী ভয়ঙ্কর সংকলক ত্রুটির বার্তা রয়েছে, তবে যখন এটি সহজেই ব্যবহার করতে আসে, এটি

TEMPLOG_LOG(my_logger,sev_error,aud_support) << "logged in as " << user_name;

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

নির্ভরযোগ্য (ফাঁস বা ক্রাশ করবেন না!)

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

ক্রস প্ল্যাটফর্ম (কমপক্ষে উইন্ডোজ, ম্যাকসএক্স, লিনাক্স / উবুন্টু)

যখন আমরা এটি ব্যবহার করি, আমরা এটি विन 32, ওএসএক্স এবং বিভিন্ন লিনাক্স বিতরণ, উবুন্টুতে ব্যবহার করি।

মাল্টি-থ্রেডিংয়ের জন্য: আমরা এটি ব্যবহার করি নি, তবে আমি যেটি লাইবটির আর্কিটেকচারের কথা মনে করি তা থেকে মনে হয় আপনার কেবল লগ ডুবির মধ্যে এটি পরিচালনা করতে হবে। ICBWT।


ধন্যবাদ, আমি এটিকে জানতাম না। এটিকে বুস্ট :: লগের একটি সরলীকৃত (এবং পারফরম্যান্ট) সংস্করণের মতো মনে হচ্ছে, অন্তত আসল ধারণাটিতে।
ক্লাইম

@ ক্লেইম: আমি যখন শেষবার সি ++ লগইন লাইব্রেরিগুলিতে সন্ধান করলাম তখন বুস্টের কাছে প্রস্তাব দেওয়ার মতো কিছু ছিল না বলে আমি মনে করি না, সুতরাং আমি বুস্ট :: লগ সম্পর্কে জানি না।
এসবিআই

1
@ জো: আপনি কি "এক্সপ্রেশন টেম্পলেট" শব্দটি বোঝেন ??
এসবিআই

1
আমি ভেবেছিলাম আমি করেছি তবে এখন আমি টেম্পলোগ উত্স কোডটি ডাউনলোড করে পড়া শুরু করেছি এবং এটি সি ++ আমাকে আবারও ছাপিয়ে গেছে বলে মনে হয়।

1
@ এসবিআই: আমার বিভ্রান্তির অংশটি ছিল আপনার বক্তব্য "একবারে একাধিক স্তর হয়ে গিয়েছিল" - ইংরেজিতে একবারে অর্থ হয় তাত্ক্ষণিকভাবে বা একসাথে , যা এই ক্ষেত্রে বিপরীত। আমি এটি প্রথম হিসাবে পড়েছি এবং আপনি (এখন আমার কাছে স্পষ্টতই) দ্বিতীয়টির অর্থ। এটি ব্যাখ্যা করার জন্য সময় দেওয়ার জন্য ধন্যবাদ।

1

আপনি http://www.logog.org এ লগ লাইব্রেরিটি বিবেচনা করতে চাইতে পারেন, যা আমার ধারণা আপনার প্রয়োজনীয়তা পূরণ করতে পারে। কেভেট: আমি এটা লিখেছি।

Https://stackoverflow.com/questions/696321/best-logging-framework-for-native-c এ অন্য ব্যক্তির জবাবগুলি দেখুন


0

আপনি সম্ভবত বায়ালিক সরঞ্জামগুলির সেটে আগ্রহী :

  • লগ, ট্রেস এবং টেলিমেট্রি জন্য ওপেন সোর্স এবং ক্রস প্ল্যাটফর্ম (উইন, লিনাক্স, x86 / x64) লাইব্রেরি - পি 7
  • অবিশ্বাস্যভাবে দ্রুত (এম্বেডেড ডিভাইসের জন্য ডিজাইন করা) - প্রতি সেকেন্ডে 3 মিলিয়ন লগ নেটওয়ার্কে, 5 মিলিয়ন আধুনিক সিপিইউতে ফাইল করতে। লগিংয়ের জন্য আমি অন্য কোনও লাইব্রেরি জানি না যা প্রতিটি লগ বার্তার জন্য এই জাতীয় গতি এবং এত বিস্তৃত তথ্য সরবরাহ করে।
  • থ্রেড নিরাপদ
  • প্রতিটি ট্রেস বার্তায় রয়েছে:
    • লিখিত বার্তা
    • উচ্চতা
    • সুনির্দিষ্ট সময় (100ns)
    • উত্স ফাইল, ফাংশনের নাম ও লাইন
    • মডিউল আইডি এবং মডিউল নাম
    • থ্রেড আইডি এবং থ্রেডের নাম
    • প্রসেসর কোর সূচক
  • লগ এবং টেলিমেট্রি গ্রহণ ও দেখার জন্য সার্ভার অ্যাপ্লিকেশন
  • আপনি রিয়েল-টাইমে একাধিক উত্স থেকে লগগুলি সংগ্রহ, বিশ্লেষণ, অনুসন্ধান, ফিল্টার করতে পারেন

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