কীভাবে জিডব্লিউটি-তে কনসোলে প্রিন্ট করা যায়


92

আমি একটি জিডব্লিউটি অ্যাপ্লিকেশন ডিবাগ করছি এবং পরীক্ষার প্রয়োজনে কনসোলে আমার কিছু জিনিস মুদ্রণ করা দরকার। System.out.printlnএবং GWT.logকাজ না। কারো কি কোন ধারনা আছে?


4
: উত্তর এখানে পোস্ট করার চেষ্টা করুন stackoverflow.com/questions/17463928/...
Chepech

উত্তর:


77

ডকুমেন্টেশন উদ্ধৃত:

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

http://code.google.com/webtoolkit/doc/latest/DevGuideLogging.html

লগিং সক্ষম করার সহজ উপায় হ'ল:

# In your .gwt.xml file
<inherits name="com.google.gwt.logging.Logging"/>

# In your .java file
Logger logger = java.util.logging.Logger.getLogger("NameOfYourLogger");
logger.log(Level.SEVERE, "this message should get logged");

4
আমি মনে করি জিডব্লিউটি.লগ কাজ করছে না সে সম্পর্কে মন্তব্যটি কেন আপনার ভোট পড়ে গেছে।
চেকেট

11
হ্যাঁ, GWT.log কেবলমাত্র ডিভোমডে কাজ করে, তাই আপনি যদি আপনার কোডটি জিডব্লিউটি সংকলক দিয়ে সংকলন করে থাকেন তবে আপনি কখনই জিডাব্লুটি.লগ () থেকে কোনও আউটপুট দেখতে পাবেন না।
অ্যান্ড্রু ম্যাকেনজি

4
@ অ্যান্ড্রু উফস আপনি সত্যই সঠিক। এই উত্তরটি এত দিন হয়ে গেছে যে আমি ইতিমধ্যে এটি সম্পর্কে সমস্ত কিছু ভুলে গেছি: GWT.log ওয়েব মোডে কাজ করে না
স্ট্রলোক

4
এই বাগের কারণে এটি আইই এর কনসোল লগারে কাজ করতে পারে না । তারা বলছেন এটি যদিও GWT 2.6 এ স্থির হয়েছে।
ব্র্যাড কাপিত

4
আপনার ব্যবহৃত লগার শ্রেণি আমদানি কী? এটি সত্যিই হতাশাব্যঞ্জক।
ক্রেজি সাবাথ

50

ফোন জি্যাপের মাধ্যমে অ্যান্ড্রয়েড ডিভাইস / এমুলেটরটিতে স্থাপন করা একটি জিডব্লিউটি অ্যাপ্লিকেশন প্রসঙ্গে আমার এটি করা দরকার ছিল and উপরের মতো সিস্টেম.আউট.প্রিন্টলন () বা জিডাব্লুটি লগিং অ্যান্ড্রয়েডের লগকটে প্রদর্শিত হয়নি, তাই আমি কনসোল.লগের জন্য একটি সাধারণ জেএসএনআই র‍্যাপারের আশ্রয় নিয়েছিলাম:

  public void onModuleLoad()
  {
    Logger logger = Logger.getLogger("Test1.java");
    logger.log(Level.INFO, "ash: starting onModuleLoad (1)"); // not in logcat
    System.out.println( "ash: starting onModuleLoad (2)" ); // not in logcat
    consoleLog( "ash: starting onModuleLoad (3)" ); // This shows up
    ...
  }

  native void consoleLog( String message) /*-{
      console.log( "me:" + message );
  }-*/;

সব ইন্টারনেট ব্যবহারকারীদের জন্য: এড়ানোর ব্যতিক্রম জন্য ডেভেলপমেন্ট টুলস খোলা যখন আপনি ভাল সমাধানের একটি ব্যবহার করে দেখুন ধরা ব্লক বা ব্যবহারের এখানে বিবৃত কল মোড়ানো: stackoverflow.com/q/7742781/1845976
schnatterer

আপনি এই প্রশ্নটি একবার দেখে নিতে পারেন ?
স্টিফান ফালক

27

জিডব্লিউটি সংস্করণ ২.6.০ এ, পদ্ধতি জিডব্লিউটি.লগ ব্রাউজার কনসোলে বার্তা লিখেছে, আপনার নেটিভ পদ্ধতিগুলি লেখার দরকার নেই।


4
আমি আশা করি এটি কাজ করবে। আমি একটি জিডব্লিউটি.লগ যুক্ত করেছি ("সন্ধান করা সহজ") এবং তারপরে "সন্ধান করা সহজ" স্ট্রিংয়ের জন্য পুরো প্রকল্পটি অনুসন্ধান করেছিলাম। এটা শুধুমাত্র আমার উত্স ছিল। আমি GWT ডক্স পরীক্ষা করেছিলাম। এটি বলে যে "জিডাব্লুটি.লগ" কেবলমাত্র ডি উইন্ডোতে ডেভ মোডের জন্য। gwtproject.org/doc/latest/DaveGuideLogging.html
ক্রিসক্যান্ট্রেল

না, জিডব্লিউটি.লগ কেবলমাত্র ডিইভি / সুপার্পেডিভ মোডের জন্য, তবে উত্পাদন ব্যবহারের জন্য নয় (এটি জিডাব্লুটিটির সংকলক দ্বারা কেটে যাবে)।
ও্লাদিমির শ্মিট

25

ব্রাউজার কনসোলে লগ করতে আপনি খুব সহজ উপায়ে দেশী ব্যবহার করে এটি করতে পারেন। ডিবাগ করতে খুব সহায়ক।

যদি আপনি নীচের মতো একটি নেটিভ পদ্ধতি যুক্ত করেন তবে আপনি এটি থেকে স্ট্রিংটি পাঠাতে পারেন যেখানে আপনি চান এবং এটি ব্রাউজার কনসোলে এটি লগ করবে।

public static native void console(String text)
/*-{
    console.log(text);
}-*/;

জিডাব্লুটিটিতে স্থানীয় ব্যবহার সম্পর্কে আরও তথ্যের জন্য: http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html


স্ট্রিং হিসাবে প্যারামিটার দেওয়ার পরিবর্তে, আপনি এটিকে অন্য কিছু দিতে পারেন (উদাহরণ: জাভাস্ক্রিপ্টঅবজেক্ট) এবং কনসোলটি।
এরকিনাল্ডজ

7

উত্তর এবং মিরপি এবং স্ট্রলকের এক স্নিপকেটে দেখানো বিভিন্ন সম্ভাবনার সংক্ষিপ্তসার মাত্র । আমি এখানে বর্ণিত হিসাবে IE ব্যতিক্রমগুলির জন্য একটি সম্ভাব্য কার্যপ্রণালী যুক্ত করেছি: কেন জাভাস্ক্রিপ্ট কেবল একবার IE এ বিকাশকারী সরঞ্জাম খোলার পরে কাজ করবে?

    java.util.logging.Logger logger = Logger.getLogger(this.getClass().getSimpleName());

    native void jsConsoleLog(String message) /*-{
        try {
            console.log(message);
        } catch (e) {
        }
    }-*/;

    private void log(final String message) {
        // Logs to Dev mode console only
        GWT.log(message);
        // Logs to Dev mode and JavaScript console (requires configuration)
        this.logger.log(Level.FINEST, message);
        // Logs to JavaScript console only
        jsConsoleLog(message);

5

নেটিভ কনসোল ব্যবহার করে এখনও অন্য একটি পরিবর্তন ...

এই শ্রেণি যুক্ত করুন:

package XXX.XXX.XXX.XXX;

public class Debug {
    private static boolean isEnabled_ = false;
    public static void enable() { isEnabled_ = true; }
    public static void setEnabled( final boolean isEnabled ) 
    { isEnabled_ = isEnabled; }

    public static void log( final String s ) 
    { if( isEnabled_ ) nativeConsoleLog( s ); }

    private static native void nativeConsoleLog( String s ) 
    /*-{ console.log( s ); }-*/;
}

তারপরে, অ্যাপটি শুরু করার মতো এক পর্যায়ে এটির সাথে ডিবাগিং সক্ষম করুন:

public class XXXXXX implements EntryPoint {
    @Override
    public void onModuleLoad() {
        Debug.enable();
        ...
    }
}

তারপরে ঠিক এটির মতো ব্যবহার করুন:

Debug.log("Hello World!");

0

আমি ভাল হিসাবে এই সমস্যা ছিল। জিডাব্লুটি লগ কাজ করে তবে এটি সমস্ত জাভাস্ক্রিপ্টে রূপান্তরিত হওয়ায় এটি ক্লায়েন্ট আউটপুটে প্রিন্ট করে, তাই কেবল আপনার ব্রাউজারের কনসোলটি দেখুন এবং তারা সেখানে থাকবে। গুগল ক্রোমে উপরে ডানদিকে ট্রিপল-লাইনের কাস্টমাইজ বোতামটি ক্লিক করুন, সরঞ্জামগুলি -> বিকাশকারী সরঞ্জামগুলি ক্লিক করুন এবং কনসোলটি পপ আপ হবে। আপনার চাওয়া-পাওয়া বিবৃতিগুলি সেখানে থাকবে। এছাড়াও, সিআরটিএল + শিফট + আই হ'ল এটি শর্টকাট up আপনি যদি সার্ভারে মুদ্রণ করতে চান তবে আমি বিশ্বাস করি লগার হ্যান্ডলারগুলি ক্রমযুক্ত?


0

প্রথম উত্তরের ডকুমেন্টেশন ইউআরএল ইতিমধ্যে বিভিন্ন জায়গায় লগ করার জন্য বিভিন্ন কনফিগারেশন বিকল্প দেয়। আমার লেখা এই ফ্রেমওয়ার্কটি আপনাকে একটি দরকারী এপিআই সরবরাহ করে এবং আপনাকে আপনার সার্ভার-সাইড লগিং বাস্তবায়ন চয়ন করতে দেয়। একবার দেখুন: https://code.google.com/p/gwt-usefull-logging/


0

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


0

ব্রাউজার কনসোলে মুদ্রণের জন্য আমি এই জাতীয় কিছু ব্যবহার করছি:

ইভেন্টলগার.জভা

public class EventLogger {
    public static void logEvent(String subsys, String grp, String type) {
        logEvent(GWT.getModuleName(), subsys, grp,
                Duration.currentTimeMillis(), type);
    }

    public static native void logEvent(String module, String subsys,
                                       String grp, double millis, String type)
/*-{
    if ($wnd.__gwtStatsEvent) {
        $wnd.__gwtStatsEvent({
            'moduleName':module,
            'subSystem':subsys,
            'evtGroup':grp,
            'millis':millis,
            'type':type
        });
    }
}-*/;
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.