গ্রহণ


117

আমি বেশ কিছুদিনের জন্য log4j ব্যবহার করছি এখন এবং আমি সাধারণত log4j.xml উপরের এই ব্যবহার (সম্ভবত মাত্র অনেকে মত এবং Google অনুযায়ী এই হল উপায় এটা করতে):

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

স্পষ্টতই এটি কাজ করছে, তবে এক্সিএমএল এবং সমস্ত লেখার জন্য Elpipse এর প্রসঙ্গ-সংবেদনশীল সহায়তা সরবরাহ করে না। তদ্ব্যতীত, এটি সর্বদা একটি সতর্কতা দেখায় যে এটি এটির সন্ধান করে না log4j.dtd। এখন আমি কীভাবে এটি ঠিক করব তা আগ্রহী।

আমি কয়েকটি জিনিস এবং এই কাজগুলি চেষ্টা করেছিলাম:

<!DOCTYPE log4j:configuration SYSTEM "jar:file:/path/.m2/repository/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">
<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

উপরে থেকে আপনি দেখতে পাচ্ছেন আমরা মাভেন ব্যবহার করছি। অতএব, আমি এটি চেষ্টা করেছিলাম, তবে এটি ব্যর্থ হয়েছে:

<!DOCTYPE log4j:configuration SYSTEM "jar:file:${M2_REPO}/log4j/log4j/1.2.14/log4j-1.2.14.jar!/org/apache/log4j/xml/log4j.dtd">

ক্লাসপাথ ভেরিয়েবলগুলি কীভাবে মোকাবেলা করতে হবে তা গ্রহন সাধারণত জানে তবে কেন এই কাজ হয় না? আমি জানি যে রানটাইম চলাকালীন রেফারেন্সটি কাজ করবে না, তবে একটিও সরল করে না log4j.dtd(যদি আমি ভুল নাও করি), যাতে সমস্যা হওয়া উচিত নয়।

কেউ দয়া করে এ বিষয়ে আলোকপাত করতে পারেন?

উত্তর:


176

আমি জানি এই প্রশ্নের উত্তর দেওয়া হয়েছে, তবে আমি আমার সামান্য ভিন্ন বিকল্প সরবরাহ করতে চাই:

<!DOCTYPE log4j:configuration PUBLIC
  "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

এটি @ ফ্রাভাবে'র প্রতিক্রিয়ার অনুরূপ , তবে প্লাস সাইডে, আরও কোনও একিপেস কনফিগারেশন প্রয়োজন নেই (যেমন, আপনি যদি অন্যদের সাথে নিজের প্রকল্পটি ভাগ করে নিচ্ছেন , বা একটি বড় দল থাকেন, তবে এটি উদ্বিগ্ন হওয়ার চেয়ে কম বিষয়))।

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


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

1
মজাদার. এখন আমাকে log4j 2.0 এর জন্য ডিটিডিটি খুঁজতে হবে - কী বেদনা - আমার সম্পত্তি ফাইলের কনফিগারেশনটি কী ফিরে!
মার্টিন

8
কিছু সময় সম্প্রতি এটি কাজ করা বন্ধ করে দিয়েছে। আপনি যদি কোনও ব্রাউজারে লগিং.এপাচি.আর.এলগজ / ১.২.২/apidocs/org/apache/log4j/xML/ … এ যান তবে আপনি দেখতে পাবেন যে এখন একটি এক্সএমএল ত্রুটি রয়েছে
কিপ করুন

@ কিপ আপনি ঠিক বলেছেন, লিঙ্কটি কাজ করছে না। এখানে কারও সাথে কোনও আপডেট লিঙ্ক আছে?
mannedear

আমি লিঙ্কটি কার্লের সাথে চেক করেছি এবং এটি একটি সম্পূর্ণ ডিটিডি ফিরিয়ে দিয়েছে। আমি যদি এটি ব্রাউজারে দেখার চেষ্টা করি তবে এটি ত্রুটিগুলি ফিরিয়ে দেয়। আমি কার্লের মতো সরঞ্জাম দিয়ে এটি পরীক্ষা করার পরামর্শ দেব।
জন ইয়ারি

41

"পছন্দসমূহ -> এক্সএমএল -> এক্সএমএল ক্যাটালগ" এ ব্যবহারকারী নির্দিষ্ট ইউআরআই এক্সএমএল ক্যাটালগ এন্ট্রি হিসাবে log4j.dtd যুক্ত করার চেষ্টা করুন। যেহেতু আমি জানি এটিই সেই স্থান যেখানে গ্রহনটি সংজ্ঞা / বৈধতা ফাইলগুলির জন্য রেফারেন্স পরিচালনা করে (যেমন এক্সএসডি)। যদি তাদের এখানে পাওয়া যায় তবে গ্রহণের জন্য তাদের স্থানীয় (ওয়েব) অবস্থানটিতে অ্যাক্সেসের জন্য কোনও ইন্টারনেট অ্যাক্সেসের প্রয়োজন নেই।

আমি এটি (পরীক্ষার জন্য) এর মতো করেছিলাম এবং গ্রহণের অভিযোগ নেই:

Entry element:    URI
Location:         C:\Users\me\Desktop\log4j.dtd
URI:              file:///C:/Users/me/Desktop/log4j.dtd
Key type:         URI
Key:              http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd

হতে পারে $ 2 M2_REPO} কাজ করে - আমি এটি চেক করিনি।

আপনার লগ 4j.xML এর পরে নেটিভ URL টি ব্যবহার করুন

<!DOCTYPE log4j:configuration SYSTEM "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

সম্পাদনা

আমি উপরের সমাধানটি দিয়ে যাব তবে আপনার প্রশ্নে ফিরে আসতে আমার ধারণা, শ্রেণি পথের চলকগুলি 'জাভা বিল্ড পাথে ব্যবহার করা যেতে পারে' । তাদের কেন একটি ডক্টইপিই সংজ্ঞাতে কাজ করা উচিত? "বৈধতা দিন" (গ্রহন প্রসঙ্গে মেনু) লগ 4j.xML ফাইল এবং আপনি একটি সতর্কতা পাবেন যে পথটি সমাধান করা যাচ্ছে না।

আমি আশা classpath:org/apache/log4j/xml/log4j.dtdকরি কৌতুকটি করবে তবে সেই প্রোটোকলটিও সমর্থন করছে না (বৈধতা ত্রুটি দেখুন)। আমি আশঙ্কা করছি এটি বাক্স থেকে কার্যকর হবে না।

এবং, যেমন আমি বুঝতে পেরেছি, SYSTEM "log4j.dtd"স্বরলিপিটি কোনও স্থানধারক নয়। এটি কোনও দস্তাবেজের বৈধ রেফারেন্স যা ডিটিডি (এই ক্ষেত্রে) এর পাশেই পাওয়া যাবে বলে মনে করা হয়।


আপনি যা বলছেন তা আমি দেখতে পাচ্ছি তবে এটি সামগ্রিক সম্পত্তি বলে মনে হচ্ছে। তবে, আমাদের বিভিন্ন প্রকল্প রয়েছে (কিছু কিছু মাভেন-প্রকল্পগুলিও নয়) এবং তারা লগ 4 জনের বিভিন্ন সংস্করণ ব্যবহার করে। প্রকল্পটি কনফিগারেশনটি কিছুটা বাঁধতে পারলে দুর্দান্ত হবে।
sjngm

আপনি যদি লগ 4j এর বিভিন্ন সংস্করণটি বলেন - আপনি লগ 4j.dtd এর বিভিন্ন সংস্করণ বোঝাতে চান? আপনার প্রতিটি সংস্করণের জন্য ক্যাটালগ এন্ট্রি সংজ্ঞায়িত করতে হবে। আমি আপনাকে প্রকল্পটিতে কনফিগারেশনটি আবদ্ধ করতে চাই লগ 4j.dtd (প্রকল্পের অভ্যন্তরে) পাশে এবং <কোড> সিস্টেমে "log4j.dtd" </code> কাজ করা উচিত (I) আশা)।
FrVaBe

দুঃখিত, আমি log4j.jarসামগ্রিকভাবে বিভিন্ন সংস্করণ বোঝাতে চাইছি । আমি ধরে নিয়েছি যে "log4j.dtd" হ'ল এক ধরণের স্থানধারক যেমন এটি সাধারণ নাম। - হ্যাঁ, এক্সএমএলের পাশের লগ 4j.dtd অনুলিপি করা একটি সমাধান হতে পারে, তবে এটি কি এটি করার একটি সাধারণ উপায়?
sjngm

1
এবং দয়া করে নোট করুন যে আমরা এখানে এমন একটি সমাধানের কথা বলছি যা মূল প্রশ্নটিকে লক্ষ্য করে না।
sjngm

দুঃখিত যে লক্ষ্য করেনি যে HTTP রেফারেন্স কাজ করেছে - আমি মনে করি এটিই সেরা সমাধান - বা আপনার বক্তব্যটির জন্য প্রদত্ত রেফারেন্সটি SYSTEM "log4j.dtd" করার উপায়
FrVaBe

2

আমি ওয়েবকন্টে ডিটিডি ফোল্ডার যুক্ত করেছি এবং তারপরে আমি লগ 4 জে ডিটিডি ফাইলটি অনুলিপি করেছি। তারপরে আমি নমোর মতো চেষ্টা করেছি ইহা কাজ করছে

<!DOCTYPE log4j:configuration SYSTEM "<Path>/DTD/log4j.dtd">

পথ মানে এখানে প্রকল্পের মতো পথ /projectname


1

আমি ফ্রভবা এর উত্তর দিয়ে চেষ্টা করেছি কিন্তু আমার পক্ষে কাজ করে নি এবং আমি মূল মানটিতে একটি ছোট পরিবর্তন করেছি এবং এটি কার্যকর হয়।

"পছন্দসমূহ -> এক্সএমএল -> এক্সএমএল ক্যাটালগ"

Localization: C:\Users\me\Desktop\log4j.dtd
Key Type: URI
Key: -//APACHE//DTD LOG4J 1.2//EN

1

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

আমি একটি সংমিশ্রণ পছন্দ:

Entry element:      Public
Location:           org\apache\log4j\xml\log4j.dtd in jar file C:\Development\lib\external\apache-log4j-1.2.17\log4j-1.2.17.jar
URI:                jar:file:/C:/Development/lib/external/apache-log4j-1.2.17/log4j-1.2.17.jar!/org/apache/log4j/xml/log4j.dtd
Key type:           Public ID
Key:                -//APACHE//DTD LOG4J 1.2//EN

এটি একটি স্থানীয় জেআর উল্লেখ করে এবং সম্পূর্ণ ইউআরএল ছাড়াই একটি ডক্টইপিই ঘোষণা সমর্থন করে।

<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">

-1

সাধারণত, Eclipse log4j.dtdক্লাসপথে সন্ধান করে এবং এটি সেখানে খুঁজে পায় না এবং তাই ত্রুটি। log4j.dtdনীচের মতো ফাইলের URL সরবরাহ করে আমরা এই সমস্যাটি সমাধান করতে পারি ।

<!DOCTYPE log4j:configuration SYSTEM 
      "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">

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