弊社の API を使用して、モバイル アプリのログを New Relic に送信できます。 ログは 1 か所に集められ、分析できるようになります。
モバイルログを有効にする
デフォルトでは、モバイル エージェントはログを収集しません。 モバイル ログを有効にするには:
- one.newrelic.com > All capabilitiesに移動します。
- Mobileをクリックします。
- モバイルアプリをクリックします。
- 左側のペインのSettingsの下で、 Applicationをクリックします。
- Mobile Logsをオンに切り替えます。
- Saveをクリックします。
ログを設定する
サンプリング レートまたはログレベルを設定するには:
- New Relic で、モバイル アプリに移動します。
- 左側のペインのSettingsの下で、 Applicationをクリックします。
- サンプル レートを変更するには、 Sample rate of total sessions [合計セッションのサンプル レート]の下のフィールドで新しい値を選択します。
- ログ レベルを変更するには、Logs verbosity [ログの詳細度]の下のドロップダウンで希望のログ レベルを選択します。 デバッグ ログレベルは、エージェント デバッグ ログを表示する場合にのみ使用してください。
New Relicでログを表示する
UI でログを表示するには:
- モバイル アプリに移動します。
- 左ペインのTriage [トリアージ]の下で、 Logsをクリックします。
モバイル ログ記録に遅延が発生する可能性があることに注意してください。
- ログがLogsページに表示されるまでに最大 15 分かかります。
- ログの切り替え、サンプリング レート、ログレベルへの変更がモバイル アプリケーション内に反映されるまでに最大 15 分かかります。
APIを使用してログをキャプチャする
以下の API は、アプリケーション内のさまざまな種類の情報とイベントをキャプチャするための包括的なログ記録メソッドのセットを提供します。 これらのメソッドを使用すると、さまざまな重大度レベル (情報、警告、デバッグ、詳細、エラー)、カスタム ログレベル、およびスロー可能 (例外) やプロパティなどの追加のコンテキストを使用してメッセージをログに記録できます。
ログAPIを使用する場合、エージェントのデバッグ ログを表示する場合にのみ、debug ログレベルを使用する必要があることに注意してください。
構文
Java
NewRelic.logInfo(String message)
NewRelic.logWarning(String message)
NewRelic.logDebug(String message)
NewRelic.logVerbose(String message)
NewRelic.logError(String message)
NewRelic.log(LogLevel logLevel, String message)
NewRelic.logThrowable(LogLevel logLevel, String message, Throwable throwable)
NewRelic.logAttributes(Map<String, Object> attributes)
NewRelic.logAll(Throwable throwable, Map<String, Object> attributes)
コトリン [#kotlin]
NewRelic.logInfo(String message)
NewRelic.logWarning(String message)
NewRelic.logDebug(String message)
NewRelic.logVerbose(String message)
NewRelic.logError(String message)
NewRelic.log(LogLevel logLevel, String message)
NewRelic.logThrowable(LogLevel logLevel, String message, Throwable throwable)
NewRelic.logAttributes(Map<String, Object> attributes)
NewRelic.logAll(Throwable throwable, Map<String, Object> attributes)
例 [#example]
Java [#java]
// Log infoNewRelic.logInfo("This is an info message");
// Log warningNewRelic.logWarning("This is a warning message");
// Log debugNewRelic.logDebug("This is a debug message");
// Log verboseNewRelic.logVerbose("This is a verbose message");
// Log errorNewRelic.logError("This is an error message");
// Log with specific log levelNewRelic.log(LogLevel.INFO, "This is a log message with INFO level");
// Log throwable with specific log leveltry { throw new Exception("This is a test exception");} catch (Exception e) { NewRelic.logThrowable(LogLevel.ERROR, "Exception occurred", e);}
// Log attributesMap<String, Object> attributes = new HashMap<>();attributes.put("key1", "value1");attributes.put("key2", 123);NewRelic.logAttributes(attributes);
// Log all with throwable and attributestry { throw new Exception("This is another test exception");} catch (Exception e) { NewRelic.logAll(e, attributes);}
コトリン [#kotlin]
// Log infoNewRelic.logInfo("This is an info message")
// Log warningNewRelic.logWarning("This is a warning message")
// Log debugNewRelic.logDebug("This is a debug message")
// Log verboseNewRelic.logVerbose("This is a verbose message")
// Log errorNewRelic.logError("This is an error message")
// Log with specific log levelNewRelic.log(LogLevel.INFO, "This is a log message with INFO level")
// Log throwable with specific log leveltry { throw Exception("This is a test exception")} catch (e: Exception) { NewRelic.logThrowable(LogLevel.ERROR, "Exception occurred", e)}
// Log attributesval attributes = mapOf("key1" to "value1", "key2" to 123)NewRelic.logAttributes(attributes)
構文
目的-c
(void) logInfo:(NSString* __nonnull) message;(void) logError:(NSString* __nonnull) message;(void) logVerbose:(NSString* __nonnull) message;(void) logWarning:(NSString* __nonnull) message;(void) logAudit:(NSString* __nonnull) message;(void) logDebug:(NSString* __nonnull) message;(void) log:(NSString* __nonnull) message level:(NRLogLevels)level;(void) logAll:(NSDictionary* __nonnull) dict;(void) logAttributes:(NSDictionary* __nonnull) dict;(void) logErrorObject:(NSError* __nonnull) error;
迅速 [#swift]
func logInfo(_ message: String)func logError(_ message: String)func logVerbose(_ message: String)func logWarning(_ message: String)func logAudit(_ message: String)func logDebug(_ message: String)func log(_ message: String, level: NRLogLevels)func logAll(_ dict: [String: Any])func logAttributes(_ dict: [String: Any])func logErrorObject(_ error: NSError)
例 [#example]
目的-c [#objective-c]
[NewRelic logInfo:@"This is an info message"];
[NewRelic logError:@"This is an error message"];
[NewRelic logVerbose:@"This is a verbose message"];
[NewRelic logWarning:@"This is a warning message"];
[NewRelic logAudit:@"This is an audit message"];
[NewRelic logDebug:@"This is a debug message"];
[NewRelic log:@"This is a custom log level message" level:NRLogLevelsCustom];
NSDictionary *logDict = @{@"key1": @"value1", @"key2": @"value2"};[NewRelic logAll:logDict];
NSDictionary *attributesDict = @{@"attribute1": @"value1", @"attribute2": @"value2"};[NewRelic logAttributes:attributesDict];
NSError *error = [NSError errorWithDomain:@"com.example" code:100 userInfo:@{NSLocalizedDescriptionKey: @"This is an error description"}];[NewRelic logErrorObject:error];
迅速 [#swift]
NewRelic.logError("Encountered error=error=\(error.localizedDescription).")
NewRelic.logWarning("Warning text.")
NewRelic.logInfo("Info text.")
NewRelic.logVerbose("NewRelic.start was called.")
NewRelic.logDebug("Debug text.")
do { try errorMethod()} catch { NewRelic.logErrorObject(error)}
NewRelic.logAll([ "logLevel": "WARN", "message": "This is a test message for the New Relic logging system."])
NewRelic.logAttributes([ "logLevel": "WARN", "message": "This is a test message for the New Relic logging system.", "additionalAttribute1": "attribute1", "additionalAttribute2": "attribute2"])
構文
NewRelicCapacitorPlugin.logInfo(options: { message: string}) => void
NewRelicCapacitorPlugin.logVerbose(options: { message: string}) => void
NewRelicCapacitorPlugin.logError(options: { message: string}) => void
NewRelicCapacitorPlugin.logWarn(options: { message: string}) => void
NewRelicCapacitorPlugin.logDebug(options: { message: string}) => void
NewRelicCapacitorPlugin.logAll(options: { error: string; attributes: object; }): void
NewRelicCapacitorPlugin.logAttributes(options: { attributes: object; }): void
例 [#example]
NewRelicCapacitorPlugin.logInfo({message: "User profile loaded successfully"});
NewRelicCapacitorPlugin.logVerbose({message:"Verbose logging example"});
NewRelicCapacitorPlugin.logError({message:"Error loading user profile"});
NewRelicCapacitorPlugin.logWarn({message: "Low disk space warning"});
NewRelicCapacitorPlugin.logDebug({message:"Debugging session started"});
NewRelicCapacitorPlugin.logAll({ error: "UnexpectedError", attributes: { "errorCode": "500", "errorMessage": "Internal Server Error" ,level:"WARN"}});
NewRelicCapacitorPlugin.logAttributes({attributes:{ "userID": 12345, "sessionID": "abcde12345", "isLoggedIn": true, "message":"this is test", "level":"INFO"}});
構文
NewRelic.logInfo(message: string): void;
NewRelic.logDebug(message: string): void;
NewRelic.logVerbose(message: string): void;
NewRelic.logWarn(message: string): void;
NewRelic.logError(message: string): void;
NewRelic.log(level: string, message: string): void;
NewRelic.logAttributes(attributes: {[key: string]: boolean | number | string}): void;
例 [#example]
NewRelic.logInfo("User logged in successfully");
NewRelic.logDebug("Debug message");
NewRelic.logVerbose("Verbose message detailing step-by-step execution");
NewRelic.logWarn("Warning message indicating a potential issue");
NewRelic.logError("Error message indicating a failure");
NewRelic.log("INFO", "User logged in successfully");
NewRelic.logAttributes({ "userID": 12345, "sessionID": "abcde12345", "isLoggedIn": true, "message":"this is test", "level":"INFO"});
構文
CrossNewRelic.Current.LogInfo(String message) : void
CrossNewRelic.Current.LogError(String message) : void
CrossNewRelic.Current.LogVerbose(String message) : void
CrossNewRelic.Current.LogWarning(String message) : void
CrossNewRelic.Current.LogDebug(String message) : void
CrossNewRelic.Current.Log(LogLevel level, String message) : void
CrossNewRelic.Current.LogAttributes(Dictionary<string, object> attributes) : void
例 [#example]
CrossNewRelic.Current.LogInfo("This is an informational message");
CrossNewRelic.Current.LogError("This is an error message");
CrossNewRelic.Current.LogVerbose("This is a verbose message");
CrossNewRelic.Current.LogWarning("This is a warning message");
CrossNewRelic.Current.LogDebug("This is a debug message");
CrossNewRelic.Current.Log(LogLevel.Info, "This is an informational message");
CrossNewRelic.Current.LogAttributes(new Dictionary<string, object>() { { "BreadNumValue", 12.3 }, { "BreadStrValue", "MAUIBread" }, { "BreadBoolValue", true }, { "message", "This is a message with attributes" } });
構文
NewrelicMobile.instance.logInfo(String message) : void
NewrelicMobile.instance.logError(String message) : void
NewrelicMobile.instance.logVerbose(String message) : void
NewrelicMobile.instance.logWarning(String message) : void
NewrelicMobile.instance.logDebug(String message) : void
NewrelicMobile.instance.log(LogLevel level, String message) : void
NewrelicMobile.instance.logAll(Exception exception,Map<String, dynamic>? attributes) : void
NewrelicMobile.instance.logAttributes(Dictionary<string, object> attributes) : void
例 [#example]
NewrelicMobile.instance.logInfo("This is an informational message");
NewrelicMobile.instance.logError("This is an error message");
NewrelicMobile.instance.logVerbose("This is a verbose message");
NewrelicMobile.instance.logWarning("This is a warning message");
NewrelicMobile.instance.logDebug("This is a debug message");
NewrelicMobile.instance.log(LogLevel.Info, "This is an informational message");
NewrelicMobile.instance.logAll(Exception("This is an exception"), { "BreadNumValue": 12.3, "BreadStrValue": "FlutterBread", "BreadBoolValue": true, "message": "This is a message with attributes"});
NewrelicMobile.instance.logAttributes({ "BreadNumValue": 12.3, "BreadStrValue": "FlutterBread", "BreadBoolValue": true, "message": "This is a message with attributes"});
構文
NewRelic.logInfo(String message) : void
NewRelic.logError(String message) : void
NewRelic.logVerbose(String message) : void
NewRelic.logWarning(String message) : void
NewRelic.logDebug(String message) : void
NewRelic.log(LogLevel level, String message) : void
NewRelic.logAll(Error error,attributes?: {[key: string]: any}) : void
NewRelic.logAttributes(attributes?: {[key: string]: any}) : void
例 [#example]
NewRelic.logInfo();
NewRelic.logError("This is an error message");
NewRelic.logVerbose("This is a verbose message");
NewRelic.logWarning("This is a warning message");
NewRelic.logDebug("This is a debug message");
NewRelic.log(LogLevel.INFO, "This is an informational message");
Newrelic.logAll(new Error("This is an exception"), { BreadNumValue: 12.3, BreadStrValue: "FlutterBread", BreadBoolValue: true, message: "This is a message with attributes",});
Newrelic.logAttributes({ BreadNumValue: 12.3, BreadStrValue: "FlutterBread", BreadBoolValue: true, message: "This is a message with attributes", level: newRelic.LogLevel.INFO,});
構文
CrossNewRelicClient.Current.LogInfo(String message) : void
CrossNewRelicClient.Current.LogError(String message) : void
CrossNewRelicClient.Current.LogVerbose(String message) : void
CrossNewRelicClient.Current.LogWarning(String message) : void
CrossNewRelicClient.Current.LogDebug(String message) : void
CrossNewRelicClient.Current.Log(LogLevel level, String message) : void
CrossNewRelicClient.Current.LogAttributes(Dictionary<string, object> attributes) : void
例 [#example]
CrossNewRelicClient.Current.LogInfo("This is an informational message");
CrossNewRelicClient.Current.LogError("This is an error message");
CrossNewRelicClient.Current.LogVerbose("This is a verbose message");
CrossNewRelicClient.Current.LogWarning("This is a warning message");
CrossNewRelicClient.Current.LogDebug("This is a debug message");
CrossNewRelicClient.Current.Log(LogLevel.Info, "This is an informational message");
CrossNewRelicClient.Current.LogAttributes(new Dictionary<string, object>() { { "BreadNumValue", 12.3 }, { "BreadStrValue", "XamBread" }, { "BreadBoolValue", true }, { "message", "This is a message with attributes" } });
構文
UNewRelicBPLibrary::logInfo(FString message) : void
UNewRelicBPLibrary::logError(FString message) : void
UNewRelicBPLibrary::logVerbose(FString message) : void
UNewRelicBPLibrary::logWarning(FString message) : void
UNewRelicBPLibrary::logDebug(FString message) : void
UNewRelicBPLibrary::log(AgentLogLevel level, FString message) : void
UNewRelicBPLibrary::logAttributes(TMap <FString, FString> attributes) : void
例 [#example]
#include "NewRelicBPLibrary.h"
UNewRelicBPLibrary::logInfo("This is an informational message");
UNewRelicBPLibrary::logError("This is an error message");
UNewRelicBPLibrary::logVerbose("This is a verbose message");
UNewRelicBPLibrary::logDebug("This is a debug message");
UNewRelicBPLibrary::logWarning("This is a warning message");
UNewRelicBPLibrary::log(AgentLogLevel::Debug, "This is a debug message");
TMap<FString, FString> attributes;attributes.Add("place", TEXT("Robots"));attributes.Add("user", TEXT("user1"));attributes.Add("level", TEXT("DEBUG"));attributes.Add("message", TEXT("This is a debug message"));
UNewRelicBPLibrary::logAttributes(attributes);