লগিং ফ্রেমওয়ার্ক বেমানান


109

আমি একটি ছোট জাভা অ্যাপ্লিকেশন তৈরি করছি এবং লগিংয়ের জন্য লগব্যাক ব্যবহার করার আশা করছি।

আমার অ্যাপ্লিকেশনটির কোনও পুরানো প্রকল্পের উপর নির্ভরতা রয়েছে যা এর লগিংয়ের মাধ্যমে করে

org.apache.commons | com.springsource.org.apache.commons.logging | 1.1.1

... সুতরাং আমার পরিকল্পনা ব্যবহার করা ছিল

org.slf4j | jcl-over-slf4j | 1.5.6

... জেসিএল লগ ইন পুনর্নির্দেশ করতে

org.slf4j | slf4j-api | 1.6.0

... এবং শেষ পর্যন্ত

ch.qos.logback | logback-classic | 0.9.22
ch.qos.logback | logback-core | 0.9.22

সুতরাং আমার অ্যাপ্লিকেশনটি এর slf4j এপিআইয়ের মাধ্যমে লগব্যাকের মাধ্যমে লগব্যাক করতে পারে যখন পুরাতন লাইব্রেরি কোড পুনঃনির্দেশের মাধ্যমে একই জায়গায় লগ ইন করতে পারে।

হায়, এর ফলস্বরূপ

java.lang.NoSuchMethodError: org.slf4j.spi.LocationAwareLogger.log(Lorg/slf4j/Marker;Ljava/lang/String;ILjava/lang/String;Ljava/lang/Throwable;)V
at   org.apache.commons.logging.impl.SLF4JLocationAwareLog.info(SLF4JLocationAwareLog.java:141)

আমি এই কয়েকটি জারে উচ্চ এবং নিম্নতর ভেরিশন নম্বর চেষ্টা করেছি এবং এপিআই ডকুমেন্টেশন এবং এর মাধ্যমেও খনন করেছি ... তবে আমি সমস্যাটি খুঁজে পেতে এবং সমাধান করতে অক্ষম।

অনুগ্রহ করে সাহায্য করবেন?

লগব্যাকটিকে "কৌশলগত" লগিং কাঠামো হিসাবে বিবেচনা করা হলেও, আমার কিছুটা অবকাশ আছে যা আমি শেষ পর্যন্ত লগিং প্রক্রিয়াটি ব্যবহার করি। যদিও আমি লগব্যাক বা লগ 4 জে ব্যবহার করব আশা করি, এবং আমি অবশ্যই একটি সাধারণ কনফিগারেশনের মাধ্যমে পুরানো প্রকল্পের লগিংটি "নতুন" লগিং কাঠামোটি যা কিছুতেই শেষ হবে তা মেশাতে চাই।

উত্তর:


111

আপনি এসএলএফ 4 জে-এপি-র 1.6.0 সংস্করণের সাথে জিসিএল ব্রিজের 1.5.6 সংস্করণটি মিশ্রণ করছেন; 1.6.0 এ কয়েকটি পরিবর্তনের কারণে এটি কাজ করবে না। উভয়ের জন্য একই সংস্করণ ব্যবহার করুন, যেমন 1.6.1 (সর্বশেষ) latest আমি সব সময় jcl-over-slf4j ব্রিজ ব্যবহার করি এবং এটি দুর্দান্ত কাজ করে।


2
অবশ্যই এটি এখনই কাজ করেছে; আপনাকে অনেক ধন্যবাদ! আমি those জারগুলির ১.6.১ ব্যবহার করি নি কারণ এগুলি উপলভ্য বলে মনে হচ্ছে না। আমি এম 2 স্লিপসে অত্যন্ত বিরক্ত, যা আমাকে সমস্ত উপলভ্য সংস্করণ দেখানোর জন্য তৈরি করে যা এখনও রহস্যজনকভাবে সেগুলির একটি উল্লেখযোগ্য সংখ্যাকে ফেলে দেয়।
কার্ল স্মট্রিক্জ

1
কেবল নিম্নলিখিত কারও আগ্রহের জন্য: আমি নির্ভরতা গ্রাফটিতে একটি লাল তীর দিয়ে শেষ করেছি কারণ সর্বশেষতম লগব্যাক-কোর slf4j-1.6.0 এ জোর দেয়। সমস্ত লাল তীর অদৃশ্য হওয়া অবধি সংস্করণগুলির সাথে আরও কিছুটা ডুডলিং লেগেছিল তবে এখন এটি উভয়ই কাজ করছে এবং সমস্ত নীল তীরচিহ্ন রয়েছে।
কার্ল স্মট্রিক্জ

1
আমি ঠিক কীভাবে তা করি।
ব্যবহারকারী 1721803

ধন্যবাদ ... 'jcl-over-slf4j' ব্যবহার করে আমার দিনটি বাঁচানো হয়েছে।
তারিক এম নাসিম

41

SLF4J 1.5.11 এবং 1.6.0 সংস্করণগুলি সামঞ্জস্যপূর্ণ নয় ( সামঞ্জস্যতার প্রতিবেদনটি দেখুন ) কারণটির যুক্তি তালিকা argumentorg.slf4j.spi.LocationAwareLogger.log পদ্ধতির পরিবর্তন করা হয়েছে (যুক্ত বস্তু [] পি 5):

এসএলএফ 4 জে 1.5.11:

LocationAwareLogger.log ( org.slf4j.Marker p1, String p2, int p3,
                          String p4, Throwable p5 )

এসএলএফ 4 জে 1.6.0:

LocationAwareLogger.log ( org.slf4j.Marker p1, String p2, int p3,
                          String p4, Object[] p5, Throwable p6 )

এই পৃষ্ঠায় অন্যান্য SLF4J সংস্করণের জন্য সামঞ্জস্যতার প্রতিবেদনগুলি দেখুন ।

আপনি জাপি-সম্মতি-পরীক্ষক সরঞ্জাম দ্বারা এই জাতীয় প্রতিবেদন তৈরি করতে পারেন ।

এখানে চিত্র বর্ণনা লিখুন


23

কেবল আমার মতো পরিস্থিতিগুলিতে তাদের সহায়তা করার জন্য ...

কোনও নির্ভরশীল গ্রন্থাগারটি দুর্ঘটনাক্রমে slf4j এর একটি পুরানো সংস্করণ বান্ডিল করলে এটি ঘটতে পারে। আমার ক্ষেত্রে এটি টিকা-০.৮ ছিল। Https://issues.apache.org/jira/browse/TIKA-556 দেখুন

চারপাশের কাজটি উপাদানটি বাদ দেয় এবং তারপরে সঠিক বা প্যাচযুক্ত সংস্করণটির উপর ম্যানুয়ালি নির্ভর করে।

যেমন।

    <dependency>
        <groupId>org.apache.tika</groupId>
        <artifactId>tika-parsers</artifactId>
        <version>0.8</version>
        <exclusions>
            <exclusion>
                <!-- NOTE: Version 4.2 has bundled slf4j -->
                <groupId>edu.ucar</groupId>
                <artifactId>netcdf</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <!-- Patched version 4.2-min does not bundle slf4j -->
        <groupId>edu.ucar</groupId>
        <artifactId>netcdf</artifactId>
        <version>4.2-min</version>
    </dependency>

ধন্যবাদ! এসএলএফ 4 জে 1.6.1 এবং লগব্যাক 0.9.28 এর সাথে জ্যাক্রাবিট ২.২.৫ ব্যবহার করার চেষ্টা করার সময় আমি এতে আঘাত পেয়েছি!
হেন্ডি ইরাওয়ান

ধন্যবাদ। : আমি আপনার উত্তর এখানে লিঙ্ক spring-java-ee.blogspot.com/2011/04/...
হেন্ডি উত্থাপন Irawan
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.