আইওএস 10 এনএসলোগগুলি মুদ্রণ করে না


89

NSLogএক্সকোড 8.0 বিটা (8 এস 128 ডি) থেকে কোনও প্রিন্ট নেই । printfঅপরিবর্তিত

আমার কোডটি এখানে:

NSLog(@"hello from NSLog");
printf("hello from printf");

আইওএস 9 সিমুলেটারে আউটপুট এখানে দেওয়া হয়েছে:

2016-06-17 09:49:10.887 calmapp-dev[28517:567025] hello from NSLog
hello from printf

আইওএস 10 সিমুলেটরের আউটপুট এখানে রয়েছে:

hello from printf

আমারও একি দশা. তবে আইওএস 8.1, এক্সকোড ৮. আমি এখানে প্রতিটি উত্তর পরীক্ষা করে দেখেছি। দেখা যাচ্ছে যে আমি সবকিছু সঠিকভাবে করছি। কিছুই সত্যিই সাহায্য করেনি। সুতরাং, আমি ডিভাইসটি স্যুইচ অফ করে এটিকে চালু করেছি। এটা কাজ করে। আমি এই মন্তব্যটি এখানে লিখেছি যাতে এটি অন্যদের অনুরূপ সমস্যার মুখোমুখি হতে পারে
কৃষ্ণসিএ CA

উত্তর:


229

এটি এমন হতে পারে যে আপনি "OS_ACTIVITY_MODE" বৈশিষ্ট্যটি যোগ করেছেন: স্কিম এনভায়রনমেন্ট ভেরিয়েবলগুলিতে "অক্ষম" (সিমুলেটর থেকে ওএস আউটপুটটি আড়াল করতে) এবং এটি সম্পর্কে ভুলে গেছেন এবং এখন একটি বাস্তব ডিভাইসে চলছে।

এক্সকোড 8 এ:

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables

কেবল এটি যুক্ত করুন OS_ACTIVITY_MODEএবং পরীক্ষা করুন a কোনও মান যুক্ত করবেন না)

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

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

সংক্ষিপ্তসার: এটি এক্সকোড 8 + আইওএস 10 এর একটি বাগ, আমরা এটিকে এটি সমাধান করতে পারি:

  • সিমুলেটরটি ব্যবহার করার সময়, "OS_ACTIVITY_MODE" নামটি যোগ করুন এবং মান "অক্ষম করুন" এবং এটি পরীক্ষা করুন।

  • সত্যিকারের ডিভাইসে থাকা অবস্থায় কেবলমাত্র "OS_ACTIVITY_MODE" যুক্ত করুন এবং এটি পরীক্ষা করুন the মান যুক্ত করবেন না check আপনি এক্সকোড 8 কনসোলে এনএসএলগ দেখতে পাবেন।


4
> "মান যুক্ত করবেন না" আমি এটিকে "অক্ষম" হিসাবে সেট করেছি এবং এটি কার্যকর! খালি ক্ষেত্র আমার পক্ষে কাজ করে না।
m8labs

আপনি কি নিশ্চিত যে আসল আইফোন ডিভাইস ডিবাগিংয়ের সময়, সিমুলেটারটি নয় এটি কার্যকর হয়? যদি আমি এটি "অক্ষম" হিসাবে সেট করি, আইফোন ডিবাগিংয়ের সময় কনসোল এনএসলোগ করতে পারে না।
ব্যবহারকারী 6833743

আমি "অক্ষম" না করে এখনই পরীক্ষা করেছি, এটি এখন ডিভাইসে কাজ করে, তবে সিমুলেটারে ভেঙে গেছে, এটি এখন আবার সবকিছু দেখায় ...
m8labs

4
এই প্রক্রিয়াটি স্বয়ংক্রিয় করতে কি এখনও আছে? এটি সত্যিই বিরক্তিকর যে আমাদের এভাবে পিছনে পিছনে যেতে হবে: /
গ্রিনহাউস

4
এই সমাধান Xcode 9. দিয়ে শুরু NSLog রাখার জন্য সব NSLog আড়াল করবে প্রতিস্থাপন disableসঙ্গে default
সিউর

27

আপনি যদি এক্সকোড 8 বিটা প্রকাশের নোটগুলি পরীক্ষা করেন তবে আপনি দেখতে পাবেন যে এটিতে বলা হয়েছে:

সিমুলেটারে চলমান কোনও অ্যাপকে ডিবাগ করার সময়, লগগুলি কনসোলে দৃশ্যমান নাও হতে পারে। কার্যকারণ: এনএসএলোগগুলি দেখতে কনসোল অ্যাপ্লিকেশনটিতে সিস্টেম লগ খুলতে সিমুলেটর.অ্যাপে কমান্ড + / ব্যবহার করুন। (26457535)


9
আমি রিয়েল আইওএস 10 ডিভাইসে NSLog আউটপুট দেখতে পাচ্ছি না। আপনি যদি সত্যিকারের ডিভাইস ব্যবহার করেন তবে আপনি ডিভাইস উইন্ডোটি খুলতে পারেন (শিফট + কমান্ড + 2) এবং সেখানে ডিভাইস লগগুলি দেখতে পারেন, তবে ডিবাগিং অ্যাপ্লিকেশন লগটি দেখতে পাওয়া শক্ত কারণ কনসোলটি সিস্টেম এবং অ্যাপ্লিকেশন থেকে সমস্ত লগ দেখায়।
কিয়ানটাক্স

19

এনএস্লগ বা মুদ্রণটি আসলে কার্যকর করা হয় তবে এই সমস্যাটি সমাধান করতে অন্যান্য কনসোল ডিবাগ আউটপুটগুলির মধ্যে লুকানো রয়েছে ওপেন এক্সকোড 8:

Product -> Scheme -> Edit Scheme -> Run -> Arguments -> Environment Variables

"OS_ACTIVITY_MODE" যুক্ত করুন এবং মানটি "অক্ষম করুন" এ সেট করুন এবং এটি পরীক্ষা করুন।

বন্ধ ক্লিক করুন

xcode9

"OS_ACTIVITY_MODE" যুক্ত করুন এবং মানটিকে "ডিফল্ট" এ সেট করুন এবং এটি পরীক্ষা করুন।

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


এটি আমার পক্ষে কাজ করে না। নিযুক্ত অ্যাপ্লিকেশনগুলির জন্য এনএসলোগগুলি প্রদর্শিত হয় না। আমি আইওএস 10 ডিভাইস সহ এক্সকোড 8.1 (ম্যাক 10.11 এ চলছে) ব্যবহার করি।
মবজগ

22
এই সমাধান Xcode 9. দিয়ে শুরু NSLog রাখার জন্য সব NSLog আড়াল করবে প্রতিস্থাপন disableসঙ্গে default
সিউর

4
এই উত্তরটি Xcode 9 এর জন্য @ করুর সংশোধনের জন্য অ্যাকাউন্টে আপডেট করা উচিত
জোয়েল

8

এছাড়াও, নিশ্চিত হয়ে নিন যে কনসোলটি আসলে এক্সকোডে দৃশ্যমান রয়েছে (যেমন, নীচের চিত্র অনুসারে ডান-হাতের আইকনটি নীল করে হাইলাইট করা হয়েছে তা নিশ্চিত করুন)। আমি এক্সকোড আপগ্রেড করার পরে এটি কনসোলটি আড়াল করে এবং আমাকে কেবল ভেরিয়েবল দৃশ্য দেখায়। এটি দেখে মনে হচ্ছে এটি ঠিক মতো NSLog()কাজ করছে না, যেখানে এটি সত্যই সঠিকভাবে কাজ করছে, আমি আউটপুটটি দেখতে পাচ্ছি না।

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


এছাড়াও Shift + ⌘ + C
এক্সকোড

কি একটি মহান UI নকশা @Apple, fullof অজানা-অর্থ আইকন
প্রসেশিং

7

আমি রিয়েল আইওএস 10 ডিভাইসে NSLog আউটপুট দেখতে পাচ্ছি না। আপনি যদি সত্যিকারের ডিভাইস ব্যবহার করছেন তবে আপনি এক্সকোড (শিফট + কমান্ড + 2) থেকে ডিভাইসগুলির উইন্ডোটি খুলতে এবং সেখানে ডিভাইস লগগুলি দেখতে পারেন, তবে আপনার অ্যাপ্লিকেশনটির লগগুলি দেখতে পারা কঠিন কারণ কনসোলটি সিস্টেম এবং সমস্ত অ্যাপ্লিকেশন থেকে লগগুলি দেখায়।

(আমি এক্সকোড using ব্যবহার করছি, সুতরাং এটি এক্সকোডের সমস্যা না হলেও আইওএস 10 সমস্যা হতে পারে)


আমি আইওএস 10 জিএম এর অধীনে ডিভাইস উইন্ডোতে আমার অ্যাপের জন্য এনএসএলোগগুলি দেখছি না ... আপনি কি একই সমস্যা বোধ করছেন?
তাহিওয়ালভারাইন

আমি আইওএস 10 জিএম দিয়ে এক্সকোড 7 এ লগগুলি দেখতে পাচ্ছি, ডিভাইসগুলির উইন্ডোটি আর খোলার দরকার নেই।
কিয়ানটাক্স

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

এ নিয়ে কোন অগ্রগতি?
ঝুরি

ডিএসপি অ্যাপ্লিকেশনগুলিতে আইওএস 10 ডিভাইস লগ থেকে এনএসলোগগুলি এবং প্রিন্টফগুলি বাদ দেওয়া হয়। আপনি সরাসরি কলটিতে এটিকে প্রতিস্থাপন করতে বিশ্বব্যাপী ম্যাক্রো যুক্ত করতে পারেনos_log
এলিস্ট

6

হুঁ ... এটি "OS_ACTIVITY_MODE" সম্পত্তিটির মতো মনে হচ্ছে: এক্সকোড 9 লগটিতে প্রিভেন্টস এনএস্লোগ প্রদর্শিত হতে "অক্ষম করুন"।

আমার স্কিমের এই মানটি পরীক্ষা করা আমার লগগুলি পুনরুদ্ধার করে।


6

ভবিষ্যতে যে কেউ এর উপর আসবে For এনএসলগ আইওএস 10 এবং আইওএস 11 এ সিসলোগে মুদ্রণ না করার কারণটি অ্যাপল ইউনিফাইড লগিং-এ পরিবর্তিত হওয়ার কারণ।

আপনি ডাব্লুডাব্লুডিসি এখানে এটি সম্পর্কে আলোচনা দেখতে পারেন: https://developer.apple.com/videos/play/wwdc2016/721/

ডকুমেন্টেশন এখানে: https://developer.apple.com/docamentation/os/logging

10 থেকে আপনার এনএসএলগের পরিবর্তে os_log ব্যবহার করা উচিত।

ডিস্কে লগগুলি কীভাবে সন্ধান করতে হবে: https://www.blackbagtech.com/blog/2017/09/22/accessing-unified-logs-image/

সংক্ষিপ্তসার হিসাবে, লগগুলি /var/db/diagnosticsএকটি ভিএম এর জন্য পাওয়া যেতে পারে যেখানে অবস্থিত/Users/USERNAME/Library/Developer/CoreSimulator/Devices/SIMULATOR-GUID/data/var/db/

ভিতরে সব আইটেম কপি diagnosticsএবংuuidtext একক ফোল্ডারে (ফোল্ডারগুলি ডায়াগনস্টিক বা ইউয়েডেক্সট অন্তর্ভুক্ত কী তা অন্তর্ভুক্ত করবেন না)।

সেই ফোল্ডারটির নতুন নাম দিন foldername.xarchive

এটি কনসোল.এপ এ খুলুন বা OSX ব্যবহারটি ব্যবহার করুন log:log show <path to archive> --info --predicate <options>


আইওএস সম্পর্কে কি?
কাকিও

1

আমি এক্সকোড 8 ব্যবহার করছি তাই আমিও একই সমস্যার মুখোমুখি হই। এবং আমি এই সমস্যাটি value = disableসিমুলেটারে যুক্ত করে সমাধান করেছি , তবে একটি আসল মেশিনে আমি মান যোগ করি না।


4
আমি Xcode 9. সঙ্গে কিছু সমস্যা হচ্ছে আমি সন্নিবেশিত যুক্তি: OS_ACTIVITY_MODE কিন্তু এটা না কাজ করে ... না বলে মনে হয়
Alessio Campanelli

4
এই সমাধান Xcode 9. দিয়ে শুরু NSLog রাখার জন্য সব NSLog আড়াল করবে প্রতিস্থাপন disableসঙ্গে default
সিউর

আমার মতে এটি সঠিক উত্তর। OS_ACTIVITY_MODEসহ disableবা defaultসরাসরি
গ্রেগ

1

NSLogআমি এক্সকোড 9.1 + আইওএস 11.1 এ আপগ্রেড করার সময় বার্তাগুলি আর প্রদর্শিত হবে না। প্রাথমিকভাবে স্বীকৃত উত্তর আমাকে কনসোল অ্যাপ্লিকেশন ব্যবহার করে এবং সিমুলেটর সক্ষম করার জন্য এটিকে ঘিরে কাজ করার একটি উপায় দিয়েছে (লুকাশের উত্তর দেখুন) ) ।

কনসোল অ্যাপের অধীনে Actionআমি বাছাই করে Include Debug Messagesএবং অনির্বাচন করার চেষ্টা করেছি Include Info Messages(যাতে কনসোল সিস্টেম বার্তাগুলির সাথে সজ্জিত হয় না)।NSLogবার্তাগুলি এক্সকোডের কনসোল উইন্ডোতে উপস্থিত হয়েছে তবে কনসোল অ্যাপ্লিকেশনে নয়।

আমি বুঝতে পেরেছিলাম যে এই উত্তরের প্রতিক্রিয়াতে কোউরের মন্তব্যের জন্য আরও সরাসরি উপায় disableবা সক্ষম করতে হবে (অর্থাত্ default) আমার মতে এটি সেরা উত্তর কারণ এটি নির্ধারণ করা বা নতুনদের জন্য আরও অর্থবোধ তৈরি করবে।NSLogsOS_ACTIVITY_MODEdisabledefault

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