লগ 4 জে জাভা.ইটিল.লগিং কীভাবে প্রেরণ করবেন?


84

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

এখন, আমি কিছু ক্যাচিংয়ের প্রয়োজনে এই অ্যাপ্লিকেশনটিতে ehcache যোগ করতে চাই। পূর্ববর্তী সংস্করণগুলিতে কমন্স-লগিং ব্যবহৃত হয়েছিল, যা এই দৃশ্যে নিখুঁতভাবে কাজ করবে তবে সংস্করণ 1.6-বিটা 1 হিসাবে তারা কমন্স-লগিংয়ের উপর নির্ভরতা সরিয়ে নিয়েছে এবং এর পরিবর্তে এটি java.util.logging দ্বারা প্রতিস্থাপন করেছে।

Java.util.logging সহ বিল্ট-ইন জেডিকে লগিংয়ের সাথে সত্যিই পরিচিত না হওয়া, লগ 4 জনের বিপরীতে জুল আটকানো যেকোন লগ ম্যাসেজের সহজ উপায় আছে, তাই আমি আমার বিদ্যমান কনফিগারেশনটি ব্যবহার করতে পারি এবং যে কোনও লগিংয়ের জন্য সেট আপ করতে পারি এছছে থেকে?

JUL- এর জাভাডোকগুলি দেখে, দেখে মনে হচ্ছে যে LogManagerপ্রয়োগটি ব্যবহৃত হচ্ছে তা পরিবর্তন করতে আমি পরিবেশের ভেরিয়েবলগুলির একটি গুচ্ছ সেট আপ করতে পারলাম এবং সম্ভবত এটি ব্যবহার করতে J4 ক্লাসে log4j Loggerগুলি মোড়ানো করতে Logger। এটাই কি সঠিক পন্থা?

ব্যঙ্গাত্মক যে একটি লাইব্রেরির অভ্যন্তরীণ জেডিকে লগিং ব্যবহারের ফলে এমন মাথাব্যথার কারণ হতে পারে যখন বিশ্বের বেশিরভাগ অংশের পরিবর্তে তৃতীয় পক্ষের লাইব্রেরি ব্যবহার করা হয়।

উত্তর:


37

আমি সফলভাবে ব্যবহার করেছি এমন একটি পদ্ধতি হ'ল আমার প্রাথমিক লগিং এপিআই হিসাবে slf4j ব্যবহার করা । আমি তখন s44j লগ 4j তে আবদ্ধ থাকি। অন্যান্য ফ্রেমওয়ার্ক (জেএল এর মতো) ব্যবহার করে তৃতীয় পক্ষের নির্ভরতা slf4j এ ব্রিজ করা যায়।


4
ভাল লিঙ্ক, তবে আমি মনে করি আপনি # জুল-টু-
এসএলএফ

এটি একটি ভাল পদ্ধতির মতো শোনাচ্ছে, যদি না আমি এটি কাজ করে দেখছি না :(
ম্যাট বি

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

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

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

19

আমরা আমাদের বর্তমান প্রকল্পে SLF4J ব্যবহার করি এবং এটি আমাদের জন্য খুব ভালভাবে কাজ করে worked এসএলএফ 4 জে লগ 4 জ এর স্রষ্টা কেকি গলসি লিখেছেন এবং তিনি সত্যিই দুর্দান্ত কাজ করেছেন। আমাদের কোডে আমরা সরাসরি এসএলএফ 4 জে লগিং এপিআইগুলি ব্যবহার করি এবং আমরা এসএলএফ 4 জে কনফিগার করি যাতে জাকার্তা কমন্স লগিং (জেসিএল), জাভা.ইটিল.লগিং ( জুলুল ), এবং লগ 4 জে এপিআইএস সমস্ত এসএলএফ 4 জ এপিআইতে যুক্ত হয়। আমাদের এটি করা দরকার কারণ আপনার মতো আমরা তৃতীয় পক্ষ (ওপেন সোর্স) লাইব্রেরি ব্যবহার করি যা বিভিন্ন লগিং এপিআই বেছে নিয়েছে।

SLF4J এর নীচে, আপনি কোনও নির্দিষ্ট লগার প্রয়োগ বাস্তবায়ন করতে এটি কনফিগার করেন। এটি একটি অভ্যন্তরীণ, বা "সাধারণ" লগার সহ আসে এবং আপনি এটিকে লগ 4 জ, জুল, বা লগব্যাকের সাহায্যে ওভাররাইড করতে পারেন । কনফিগারেশন সবই আপনার ক্লাসপথে বিভিন্ন জার ফাইলগুলিতে ফেলে done

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

@ ওভারথিংকের মতো, আমি আপনার সেটআপে আন্তরিকভাবে এসএলএফ 4 জে ব্যবহার করার পরামর্শ দেব।


8
লগিং ফ্রেমওয়ার্ক / ফ্যাসাদ পুনরায় উদ্ভাবন করার জন্য Ceci কে কতবার প্রয়োজন?
এমপি।

@ এমপি: লগিং চটকদার নাও হতে পারে তবে এটি বৃহত্তর বাণিজ্যিক বাণিজ্যিক গ্রেড সফটওয়্যারগুলির একটি অত্যন্ত প্রয়োজনীয়। এবং এসএলএফ 4 জে পৃথক লগিং ফ্রেমওয়ার্ক ব্যবহার করে কোড সংহত করার সমস্যা সমাধান করে (লগ 4 জে গ্রহণের পরিবর্তে java.utils.logging বিকাশের জন্য সান নির্বাচন দ্বারা আরও জরুরি হয়ে উঠেছে)।
জিম ফেরানস

4
@ এমপি, এসএলএফ 4 জে প্রয়োজনীয় ছিল কারণ সান খারাপ কাজ জুলের সাথে করেছিল। লগব্যাক লগ 4 জনের একটি কাঁটাচামক, কোনও নতুন প্রকল্প নয়।
থরবজর্ন রাভন অ্যান্ডারসন

4
আমি লগব্যাকটি প্রয়োজনীয় হিসাবে খুঁজে পেয়েছি, যদি অন্য কোনও কিছুর জন্য না হয় তবে এটি আপাচি নয় এবং এটি আসলে নথিভুক্ত।
স্পেনসার কামোমস

13

লগ ৪ জে জুলিয়াল ব্রিজ করার জন্য এসএলএফ 4 জে এর চেয়ে সহজ বিকল্প রয়েছে, দেখুন http://people.apache.org/~psmith/logging.apache.org/sandbox/jul-log4j-bridge/example.html

আপনাকে কেবল ক্লাসপথে জুল-লগ 4 জে ব্রিজ লাগাতে হবে এবং একটি সিস্টেম সম্পত্তি যুক্ত করতে হবে:

-Djava.util.logging.manager=org.apache.logging.julbridge.JULBridgeLogManager

জুল-লগ 4 জে ব্রিজটি মাভেন সেন্ট্রালে নেই এবং এই সংগ্রহস্থল থেকে আনা যায়:

<repository>
  <id>psmith</id>
  <url>http://people.apache.org/~psmith/logging.apache.org/repo</url>
  <releases>
    <enabled>false</enabled>
  </releases>
</repository>

এবং তারপরে ব্যবহৃত:

<dependency>
  <groupId>org.apache.logging</groupId>
  <artifactId>apache-jul-log4j-bridge</artifactId>
  <version>1.0.0-SNAPSHOT</version>
  <scope>test</scope>
  <exclusions>
    <exclusion>
      <groupId>log4j</groupId>
      <artifactId>apache-log4j-component</artifactId>
    </exclusion>
  </exclusions>
</dependency>

নিম্নলিখিত পদক্ষেপগুলি সহ উত্স থেকে এটি পুনর্নির্মাণ করাও সম্ভব:

  1. এসএনএন কো http://svn.apache.org/repos/asf/logging/sandbox/jul-to-log4j-bridge/
  2. pom.xML সম্পাদনা করুন, log4j: log4j: 1.2.15 এর উপর নির্ভরতা প্রতিস্থাপন করুন log4j দিয়ে: অ্যাপাচি-লগ 4j- অতিরিক্ত: 1.2.17 এবং অ্যাপাচি-লগ 4j- উপাদানটির উপর নির্ভরতা অপসারণ করুন
  3. এমভিএন প্যাকেজ

4
আমি মনে করি এটি সহজ কারণ এটি আপনার কোড পরিবর্তন না করেই করা যেতে পারে, আপনাকে কেবল একটি সিস্টেম সম্পত্তি যুক্ত করতে হবে। SLF4J এখনও তেমন একটি প্রক্রিয়া প্রস্তাব করে না, আপনি কোড বা logging.propertiesফাইলটি পরিবর্তন করুন change
এমমানুয়েল

4
দুর্ভাগ্যক্রমে: log4j2 এ এটি বিদ্যমান নেই ,(
বীপডগ

JulLog4jBridge.assimilate();o_0
ভয়েগট

4
সতর্কতা! jul-log4j-bridgeকখনও প্রকাশিত apache-log4j-companionsবান্ডিল ব্যবহার করে (পরিত্যক্তদের থেকে একটি ব্যাকপোর্ট log4j 1.3)। এটি তৈরি করতে আপনার খুব কষ্ট হবে। স্বাভাবিকভাবেই, সেতুটি নিজেও প্রাক-মুক্তির পরিত্যক্ত হয়।
ivan_pozdeev

@ আইভান_পোজদেদেভ ভাল কথা, আপনাকে ধন্যবাদ আমি এটি তৈরির জন্য নির্দেশাবলী যুক্ত করেছি।
এমানুয়েল

9

অক্টোবর 2014

লোগোজেজে ২.১ সংস্করণে লগ 4j-জুল উপাদান উপস্থিত রয়েছে, যা একে একে অনুমতি দেয়। তবুও, আপনি লগ 4 জ 1 ব্যবহার করছেন এমন ক্ষেত্রে, এই পদ্ধতির ব্যবহার করতে লগ 4j2 এ আপগ্রেড করা সম্ভব হবে।

জেডিকে লগিং অ্যাডাপ্টার

ক্লাস লগম্যানেজার

Log4j 1.x থেকে log4j 2 এ স্থানান্তরিত করুন


4
এখন
অবধি

ভবিষ্যতের পাঠকদের জন্য: আমি নিশ্চিত এটি কাজ করছে। সুতরাং, মূলত (1) এটিকে আপনার পোম mvnrepository.com/artifact/org.apache.logging.log4j/log4j-jul এ যুক্ত করুন এবং (২) প্রথম লিঙ্কে সিস্টেমের সম্পত্তি যুক্ত করুন (উদাহরণস্বরূপ, জেভিএম প্যারামিটারে যুক্ত করুন -জাজা)। Use.logging.manager = org.apache.logging.log4j.jul.LogManager)
হোসাম এল-দ্বীন

3

আমি বিশ্বাস করি যে slf4j সাইটটিতে জাভা.ইটিল.লগিং ইভেন্টগুলি এসএলফ 4 জ মাধ্যমে (এবং তাই লগ 4 জে) পাস করার জন্য একটি সেতু রয়েছে।

হ্যাঁ, এসএলএফ 4 জে ডাউনলোডটিতে জুল-টু-এসএলএফ 4j রয়েছে যা আমি বিশ্বাস করি এটি ঠিক তাই করে। এতে এসএলএফ 4 জে রেকর্ডগুলি প্রেরণে একটি জুএল হ্যান্ডলার রয়েছে।


2

@ যিশাই - আমার উইকিতে লিঙ্কটি পোস্ট করার জন্য ধন্যবাদ। সেখানে উদাহরণটি JUL কে লগ 4 জে পুনঃনির্দেশ করে এবং আমি এটি কয়েক বছরের জন্য একটি প্রযোজনা ব্যবস্থায় চালিত করেছি। JBoss 5.x ইতোমধ্যে J4 লোগ 4 জে পুনঃনির্দেশ করেছে, তাই আমরা আপগ্রেড করার সময় আমি এটিকে বাইরে নিয়ে এসেছি। আমার কাছে একটি নতুন আছে যা এসএলএফ 4 জে পুনঃনির্দেশ করে, যা আমি এখন কয়েকটি জিনিসে ব্যবহার করি। সুযোগ পেলেই আমি পোস্ট করব।

তবে এসএলএফ 4 জে এরই মধ্যে রয়েছে:

http://mvnrepository.com/artifact/org.slf4j/jul-to-slf4j


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