আমি একটি জিডব্লিউটি অ্যাপ্লিকেশন ডিবাগ করছি এবং পরীক্ষার প্রয়োজনে কনসোলে আমার কিছু জিনিস মুদ্রণ করা দরকার। System.out.println
এবং GWT.log
কাজ না। কারো কি কোন ধারনা আছে?
উত্তর:
ডকুমেন্টেশন উদ্ধৃত:
জিডাব্লুটি লগিং যুক্ত করা নিচের কোড উদাহরণের মতই সহজ, তত সহজ। তবে - লগিং কীভাবে কাজ করে এবং কীভাবে এটি সঠিকভাবে কনফিগার করতে হয় তা বোঝা গুরুত্বপূর্ণ, সুতরাং দয়া করে এই নথির বাকী অংশটি পড়তে সময় নিন।
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");
ফোন জি্যাপের মাধ্যমে অ্যান্ড্রয়েড ডিভাইস / এমুলেটরটিতে স্থাপন করা একটি জিডব্লিউটি অ্যাপ্লিকেশন প্রসঙ্গে আমার এটি করা দরকার ছিল 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 );
}-*/;
জিডব্লিউটি সংস্করণ ২.6.০ এ, পদ্ধতি জিডব্লিউটি.লগ ব্রাউজার কনসোলে বার্তা লিখেছে, আপনার নেটিভ পদ্ধতিগুলি লেখার দরকার নেই।
ব্রাউজার কনসোলে লগ করতে আপনি খুব সহজ উপায়ে দেশী ব্যবহার করে এটি করতে পারেন। ডিবাগ করতে খুব সহায়ক।
যদি আপনি নীচের মতো একটি নেটিভ পদ্ধতি যুক্ত করেন তবে আপনি এটি থেকে স্ট্রিংটি পাঠাতে পারেন যেখানে আপনি চান এবং এটি ব্রাউজার কনসোলে এটি লগ করবে।
public static native void console(String text)
/*-{
console.log(text);
}-*/;
জিডাব্লুটিটিতে স্থানীয় ব্যবহার সম্পর্কে আরও তথ্যের জন্য: http://www.gwtproject.org/doc/latest/DevGuideCodingBasicsJSNI.html
উত্তর এবং মিরপি এবং স্ট্রলকের এক স্নিপকেটে দেখানো বিভিন্ন সম্ভাবনার সংক্ষিপ্তসার মাত্র । আমি এখানে বর্ণিত হিসাবে 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);
নেটিভ কনসোল ব্যবহার করে এখনও অন্য একটি পরিবর্তন ...
এই শ্রেণি যুক্ত করুন:
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!");
আমি ভাল হিসাবে এই সমস্যা ছিল। জিডাব্লুটি লগ কাজ করে তবে এটি সমস্ত জাভাস্ক্রিপ্টে রূপান্তরিত হওয়ায় এটি ক্লায়েন্ট আউটপুটে প্রিন্ট করে, তাই কেবল আপনার ব্রাউজারের কনসোলটি দেখুন এবং তারা সেখানে থাকবে। গুগল ক্রোমে উপরে ডানদিকে ট্রিপল-লাইনের কাস্টমাইজ বোতামটি ক্লিক করুন, সরঞ্জামগুলি -> বিকাশকারী সরঞ্জামগুলি ক্লিক করুন এবং কনসোলটি পপ আপ হবে। আপনার চাওয়া-পাওয়া বিবৃতিগুলি সেখানে থাকবে। এছাড়াও, সিআরটিএল + শিফট + আই হ'ল এটি শর্টকাট up আপনি যদি সার্ভারে মুদ্রণ করতে চান তবে আমি বিশ্বাস করি লগার হ্যান্ডলারগুলি ক্রমযুক্ত?
প্রথম উত্তরের ডকুমেন্টেশন ইউআরএল ইতিমধ্যে বিভিন্ন জায়গায় লগ করার জন্য বিভিন্ন কনফিগারেশন বিকল্প দেয়। আমার লেখা এই ফ্রেমওয়ার্কটি আপনাকে একটি দরকারী এপিআই সরবরাহ করে এবং আপনাকে আপনার সার্ভার-সাইড লগিং বাস্তবায়ন চয়ন করতে দেয়। একবার দেখুন: https://code.google.com/p/gwt-usefull-logging/
আমি আপনাকে জিডাব্লুটি বিকাশকারী মোড ব্যবহার করার পরামর্শ দিচ্ছি এটি কোড সার্ভারে স্বয়ংক্রিয় সংকলন এবং কোড-বরাদ্দের কারণ হিসাবে কিছুটা ওভারহেড যুক্ত করে, তবে আপনার অ্যাপ্লিকেশনটির ক্লায়েন্টের দিক থেকে কিছু ব্যতিক্রম দেখা দিলে এটি বেশ স্পষ্ট। আমার অর্থ, কিছু সময় ক্রোম কনসোল (বা ফায়ারব্যাগ বা ব্রাউজার ডিবাগিং অন্তর্নির্মিত সরঞ্জাম) খুব বেশি না বলে, বিশ্বাস করুন, নালপয়েন্টার এক্সেকশন খুঁজে পাওয়া ঘাড়ে ব্যথা হয় যখন আপনি কী ঘটছে তা বোঝার চেষ্টা করছেন আপনার কোড সতর্ক করে।
ব্রাউজার কনসোলে মুদ্রণের জন্য আমি এই জাতীয় কিছু ব্যবহার করছি:
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
});
}
}-*/;
}