সার্ভারে ক্লায়েন্টাইড জাভাস্ক্রিপ্ট ত্রুটিগুলি লগিং করা [বন্ধ]


98

আমি একটি এএসপি.এনইটি সাইট চালাচ্ছি যেখানে কেবল ম্যানুয়াল পরীক্ষার মাধ্যমে কিছু জাভাস্ক্রিপ্ট ত্রুটিগুলি খুঁজে পেতে আমার সমস্যা আছে problems

ক্লায়েন্টাইডে সমস্ত জাভাস্ক্রিপ্ট ত্রুটিগুলি ধরা এবং সার্ভারে অর্থাৎ ইভেন্টলগে (ওয়েবসার্চ বা এরকম কোনও কিছুর মাধ্যমে) লগ ইন করার কোনও সম্ভাবনা আছে কি?


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

আমি ধরে নিয়েছি আপনি গড় ব্যবহারকারীর অবদানের অর্থ নয় (অন্যথায় এটি এক্সএসএস হোল) ... তবে ... আপনি সম্ভবত তাদের জেএস চেষ্টা / ধরার ক্ষেত্রে বিচ্ছিন্ন করতে পারেন যাতে এটি কমপক্ষে আপনার নিজের জেএসকে প্রভাবিত করে না ... অজানা সাইটের গতিশীল, আমি জানি না এটি সাহায্য করবে কি না ...
মাইক স্টোন

সামগ্রীটি কোম্পানির অন্যান্য টিমের, ব্যবহারকারীদের থেকে নয় তাই এটি কোনও সুরক্ষা-ঝুঁকি নয়
এমএডম্যাপ

বাগসনাগ আপনার ত্রুটিগুলি স্বয়ংক্রিয়ভাবে লগ করে ড্যাশবোর্ডে প্রদর্শন করবে show নেট এবং জেএস এর জন্য কাজ করে।
ডন পি

উত্তর:


69

ওনাররর ইভেন্টের জন্য আপনি নিজের হ্যান্ডলার স্থাপনের চেষ্টা করতে পারেন এবং সার্ভারটি কী ভুল হয়েছে তা জানাতে XMLHttpRequest ব্যবহার করতে পারেন, তবে এটি কোনও স্পেসিফিকেশনের অংশ না হওয়ায় সমর্থন কিছুটা স্বচ্ছল

জাভাস্ক্রিপ্ট ত্রুটিগুলিতে লগ করতে এক্সএমএলএইচটিপিআরকিউস্ট ব্যবহার করা থেকে এখানে একটি উদাহরণ রয়েছে :

window.onerror = function(msg, url, line)
{
  var req = new XMLHttpRequest();
  var params = "msg=" + encodeURIComponent(msg) + '&url=' + encodeURIComponent(url) + "&line=" + line;
  req.open("POST", "/scripts/logerror.php");
  req.send(params);
};

আমি সবেমাত্র একটি সার্ভার কন্ট্রোল প্রকাশ করেছি যা আপনাকে কোডডেজ
গ্যাব্রিয়েল

4
এটি যদি হ্যান্ডলারে ক্র্যাশ করে তবে কি তা অসম্পূর্ণভাবে লুপ করবে?
জিন-ফিলিপ লেকলার্ক

4
@ জিন-ফিলিপেলক্লার্ক হ্যাঁ। এবং আরও খারাপ, এটি যদি কখনও কখনও ত্রুটিযুক্ত লুপে পড়ে তবে এটি আপনার সার্ভারের শেষ পয়েন্টটি করবে। কোনও ক্লায়েন্টকে খুব দ্রুত সার্ভারে আঘাত করা রোধ করতে আপনার এটিকে একটি থ্রোটলিং ফাংশন যুক্ত করা উচিত। এখানে {ট্র্যাক: js} github.com/TrackJs/Tech-Demo/blob/master/src/TrackJs.Demo/…
টড গার্ডনার

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

এই জিনিসটি আপনার সার্ভারকে অভিভূত করতে পারে যেমন আপনি যদি পান এবং setIntervalপদ্ধতিতে ত্রুটি পান । ওয়েবে অনেক জেএস ত্রুটি প্রতিবেদন পরিষেবা উপলব্ধ। চেকআউট এররলাইটিক্স । এটি আপনাকে আপনার ওয়েবসাইটে প্রতিটি ব্যবহারকারীর ক্রিয়া বিশ্লেষণ দেয়।
বিবেক মারাকানা

29

সংক্ষিপ্ত উত্তর: হ্যাঁ, এটি সম্ভব।

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

আমি এগুলির কোনওটির জন্য কথা বলতে পারি না কারণ আমি এখনও সেগুলি ব্যবহার করে দেখিনি।


4
মাস্কুলা ডট কমের সাথে নিবন্ধিত। পরিষেবাটি একীভূত করতে এবং ব্যবহার করতে খুব আকর্ষণীয় এবং সহজ দেখাচ্ছে। এছাড়াও জাভাস্ক্রিপ্ট লাইব্রেরি github.com/csnover/TraceKit রয়েছে যা ক্লায়েন্টের কাছ থেকে একটি ব্যতিক্রম তথ্য পেতে পারে তবে আপনাকে নিজের সার্ভারের পাশের লগগিন প্রক্রিয়াটি বিকাশ করতে হবে। গুগল অ্যানালিটিকাগুলি যদি এর জন্য ব্যবহার করা যেতে পারে তবে আমি ভাবছি
ম্যাকসেম কোজলেঙ্কো

4
trackjs.com পাশাপাশি, এবং এটি ত্রুটির আগে ব্যবহারকারী এবং নেটওয়ার্ক কী করছে তা ট্র্যাক করে।
টড গার্ডনার

উপরের তালিকার পাশাপাশি লগ 4sure.com এর নিখরচায় রয়েছে এবং লগগুলির রিয়েল-টাইম মনিটরিংও রয়েছে। আপনি নিজের কাস্টম লগ টেবিলটি তৈরি করতে পারেন
ভবিন

erroralerts.com পাওয়া যায় নি
কুইকিনেট

4
jsnlog.com বিনামূল্যে এবং মুক্ত উত্স
স্টম

12

আমি কর্মস্থলে একটি প্রকল্পে জাভাস্ক্রিপ্ট ত্রুটিগুলিতে লগইন করতে সার্ভার সাইড ত্রুটি কার্যকর করেছি। JQuery ব্যবহার করে লিগ্যাসি কোড এবং নতুন কোডের মিশ্রণ রয়েছে ।

আমি window.onerrorjQuery ইভেন্ট হ্যান্ডলারের সংমিশ্রণ এবং মোড়ক ব্যবহার করে একটি ত্রুটি পরিচালনার ফাংশন সহ ওপেনড ফাংশনটি দেখুন (দেখুন: জাভাস্ক্রিপ্ট ত্রুটি ট্র্যাকিং: উইন্ডো.অনারিয়র যথেষ্ট নয় কেন )।

  • window.onerror: আইই (এবং ফায়ারফক্সের বেশিরভাগ ত্রুটি) এর সমস্ত ত্রুটিগুলি ধরা পড়ে, তবে সাফারি এবং অপেরাতে কিছুই করে না।
  • jQuery ইভেন্ট হ্যান্ডলারগুলি: সমস্ত ব্রাউজারগুলিতে jQuery ইভেন্ট ত্রুটিগুলি ক্যাচ করে।
  • jQuery প্রস্তুত ফাংশন: সমস্ত ব্রাউজারে সূচনা ত্রুটিগুলি ক্যাচ করে।

আমি একবার ত্রুটিটি ধরা পরে, আমি এটিতে কিছু অতিরিক্ত বৈশিষ্ট্য যুক্ত করব (ইউআরএল, ব্রাউজার, ইত্যাদি) এবং তারপরে এজাক্স কল ব্যবহার করে এটি আবার সার্ভারে পোস্ট করব post

সার্ভারে আমার একটি ছোট পৃষ্ঠা রয়েছে যা কেবল পোস্ট করা যুক্তিগুলি গ্রহণ করে এবং আমাদের সাধারণ সার্ভার লগিং ফ্রেমওয়ার্কে আউটপুট করে।

আমি এর জন্য সোর্স কোডটি খুলতে চাই (jQuery প্লাগইন হিসাবে)। যদি কেউ আগ্রহী আমাকে জানান, এটি কর্তাদের বোঝাতে সহায়তা করবে!


4
এই কোডটি উপলব্ধ করা হবে যে কোনও সুযোগ?
লুক

দুর্ভাগ্যক্রমে নয় :( যেহেতু আমি সেই সংস্থার পক্ষে কাজ করছি না যেখানে আমি এই কোডটি তৈরি করেছি But তবে এটি কোডের প্রায় 100 লাইন ছিল এবং উপরের বিবরণগুলি থেকে পুনরায় তৈরি করা যুক্তিসঙ্গতভাবে সহজ হওয়া উচিত
কার্ল

4
এটি ঠিক এখানে রয়েছে ছেলেরা: webcache.googleusercontent.com/…
ডেভিন জি রোড

আমি চেষ্টা করেছি, কিন্তু হতাশার জন্য jquery রাখা একটি ব্যথা এবং উইন্ডো erঅররর সিডিএনএস এর মাধ্যমে পরিবেশন করা মিনিডেড কোড এবং জাভাস্ক্রিপ্টের জন্য ব্যর্থ হয়
অঙ্কুর আগরওয়াল

2

যদি আপনি গুগল অ্যানালিটিক্স ব্যবহার করেন তবে গুগল অ্যানালিটিক্স ইভেন্টগুলিতে জাভাস্ক্রিপ্ট ত্রুটিগুলি লগ করতে পারেন।

এই অ্যাপ্লিকেশনটি দেখুন: http://siteapps.com/app/log_javascript_erferences_with_ga-181

আশা করি এটা সাহায্য করবে.


4
সেই লিঙ্কটি আর কাজ করে না। আপনি গুগল অ্যানালিটিক্সের সাথে জাভাস্ক্রিপ্ট ত্রুটিগুলি লগইন সম্পর্কে একটি নিবন্ধটি বিকাশকারীদের মধ্যে
ডেকে নিতে পারেন ডাব্লু। /


0

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

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



0

আপনি চেষ্টা / ধরা থেকে সার্ভারে সম্ভাব্যভাবে একটি অজ্যাক্স কল করতে পারেন, তবে এটি সম্ভবত আপনি সবচেয়ে ভাল করতে পারেন।

আমি কি এর পরিবর্তে জাভাস্ক্রিপ্ট ইউনিট পরীক্ষার পরামর্শ দিতে পারি? সম্ভবত JSUnit দিয়ে ?


আমরা জাভাস্ক্রিপ্ট ইউনিটস্টেস্টিং ব্যবহার করছি না এমন সমস্যা হ'ল কারণ সাইট / সামগ্রীতে প্রচুর লোক অবদান রাখছে এবং তারা জাভাস্ক্রিপ্ট ব্যবহার করছে (তবে এটি সম্পর্কে কোনও ধারণা নেই!) তাই সাধারণ সমাধানটি আরও ভাল হবে।
এমএডম্যাপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.