iOS 앱의 원격 로그 뷰어(NSLogger)
7981 단어 NSLoggeriOSSwiftObjective-Cdebug
iOS 앱의 원격 로그 획득 정보
iOS10부터 OS의 로그가 대량으로 나오게 되었고, 콘솔 로그에서 일본어가 깨지는 경우도 있고, 앱 로그를 개별적으로 원격 감시하고 싶었습니다.
그래서 NSLogger ( htps : // 기주 b. 코 m/f 핏 t/응 S㎉게 r ) 라는 원격 로그 앱을 이용해 보았습니다.
이 NSLogger는 원격 로그 전송 클라이언트 라이브러리와 수신 뷰어 앱으로 구성되어 있지만 사용하기 쉽고 유지 보수가 계속되는 것이 좋습니다.
이 앱은 뷰어와 클라이언트 라이브러리로 구성되어 있으며 뷰어는 게시 된 소스 코드에서 빌드 (Mac 개발자 라이센스) 또는 바이너리로 제공됩니다.
iOS 앱에 내장
앱에 내장하는 방법
github 사이트에 적힌대로,
됩니다.
앱측에서의 로그 출력용 클래스의 샘플을 아래에 기재합니다.
LOGFILE은, 오프라인시의 로그 버퍼용 파일명. iOS 기기의 임시 디렉토리에 기록됩니다.
SERVICE_NAME은 Bonjour의 서비스 이름입니다. NSLogger의 Preferences->Network 설정에서 설정할 값과 일치합니다.
LogManager.swift
import NSLogger
class LogManager {
static let LOGFILE_NAME = "logging_data"
static let SERVICE_NAME = "test"
static let DEBUG_LEVEL = 0
// 初期化
static func start() {
// インスタンス生成
let logger = LoggerGetDefaultLogger()
// オフラインロギングファイル設定、Bonjour設定
let paths = NSTemporaryDirectory()
let file = "\(paths)/\(LOGFILE_NAME)"
LoggerSetBufferFile(logger, file as CFString!)
LoggerSetOptions(logger, UInt32(
kLoggerOption_BufferLogsUntilConnection |
kLoggerOption_BrowseBonjour |
kLoggerOption_BrowseOnlyLocalDomain))
LoggerSetupBonjour(logger, nil, SERVICE_NAME as CFString!)
// ロギングスタート
LoggerStart(logger)
}
// ログ出力
static func print(format: String!, args: CVarArg...) {
let appID = Bundle.main.bundleIdentifier
LogMessage_va(appID, Int32(DEBUG_LEVEL), format, getVaList(args))
}
}
전화 방법
먼저 LogManager.start()로 초기화
이후는 아래 예와 같이 print 메소드로 로그 출력
Objective-C 샘플도 나열합니다.
LogManager.h
@interface LogManager : NSObject
+(void)start;
+(void)print:(NSString*)format, ...;
@end
LogManager.m
#import "LogManager.h"
#import <NSLogger/NSLogger.h>
@implementation LogManager
#define LOGFILE_NAME @"logging_data"
#define SERVICE_NAME @"test"
#define DEBUG_LEVEL 0
// 初期化
+(void)start
{
// インスタンス作成
Logger *logger = LoggerGetDefaultLogger();
// オフラインロギングファイル設定、Bonjour設定
NSString *tmpDirPath = NSTemporaryDirectory();
NSString *file = [NSString stringWithFormat:@"%@/%@",tmpDirPath,LOGFILE_NAME];
LoggerSetBufferFile(logger,(__bridge CFStringRef)file);
LoggerSetOptions(logger,kLoggerOption_BufferLogsUntilConnection |
kLoggerOption_BrowseBonjour |
kLoggerOption_BrowseOnlyLocalDomain);
LoggerSetupBonjour(logger, nil, (__bridge CFStringRef)SERVICE_NAME);
// ロギングスタート
LoggerStart(logger);
}
// ログ出力
+(void)print:(NSString*)format,...
{
NSString *appID = [[NSBundle mainBundle] bundleIdentifier];
va_list args;
va_start(args, format);
NSString *message = [[NSString alloc]initWithFormat:format arguments:args];
va_end(args);
LogMessage_va(appID, DEBUG_LEVEL, message, nil);
}
@end
전화 방법
먼저 [LogManager start]로 초기화
이후는 아래 예와 같이 print 메소드로 로그 출력
뷰어 준비
사이트에는 macOS 용 뷰어와 iPad 용 뷰어 소스 코드가 있습니다. macOS 용 뷰어는 바이너리도 있습니다.
다운로드하고 시작한 후 위에서 설명한대로 Preferences의 Bonjour Service Name을 설정합니다.
로그 보내기 iOS 기기와 뷰어를 실행하는 Mac이 동일한 WiFi에 있으면 Bonjour는 로그를 뷰어로 보냅니다.
마지막으로
아직 조금밖에 사용하고 있지 않습니다만, 사용하기 쉬운 툴일까라고 생각합니다.
로그에 대해서는 문자 뿐만이 아니라, 바이너리 데이터나 화상도 보낼 수 있다고 하는 것입니다.
각 화면의 스크린샷을 로그로 보내는데도 사용할 수 있을 것 같네요.
Reference
이 문제에 관하여(iOS 앱의 원격 로그 뷰어(NSLogger)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yoneDev01/items/95b301ebb894ef1b9d0d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)