commit b41fb7403428b9bbbd827234e567d8302f1a2a2b
parent bcdec95cec445b398ca3e86195b531f7f0ebc507
Author: Marc Stibane <marc@taler.net>
Date: Mon, 23 Oct 2023 23:14:47 +0200
Native Logging for wallet-core (QuickJS)
Diffstat:
2 files changed, 33 insertions(+), 2 deletions(-)
diff --git a/TalerWallet1/Model/WalletModel.swift b/TalerWallet1/Model/WalletModel.swift
@@ -94,13 +94,15 @@ fileprivate struct InitRequest: WalletBackendFormattedRequest {
func args() -> Args {
return Args(persistentStoragePath: persistentStoragePath,
// cryptoWorkerType: "sync",
- logLevel: "info") // trace, info, warn, error, none
+ logLevel: "info", // trace, info, warn, error, none
+ useNativeLogging: true)
}
struct Args: Encodable {
var persistentStoragePath: String
// var cryptoWorkerType: String
var logLevel: String
+ var useNativeLogging: Bool
}
var persistentStoragePath: String
diff --git a/TalerWallet1/Quickjs/quickjs.swift b/TalerWallet1/Quickjs/quickjs.swift
@@ -3,13 +3,14 @@
* See LICENSE.md
*/
import Foundation
+import os.log
import FTalerWalletcore
public protocol QuickjsMessageHandler: AnyObject {
func handleMessage(message: String)
}
-
+// MARK: -
func notification_callback(userdata: Optional<UnsafeMutableRawPointer>,
payload: Optional<UnsafePointer<Int8>>) {
let native = Unmanaged<Quickjs>.fromOpaque(userdata!).takeUnretainedValue()
@@ -17,15 +18,43 @@ func notification_callback(userdata: Optional<UnsafeMutableRawPointer>,
native.internalOnNotify(payload: string)
}
+func logging_callback(userdata: Optional<UnsafeMutableRawPointer>,
+ level: TALER_WALLET_LogLevel,
+ tag: Optional<UnsafePointer<Int8>>,
+ message: Optional<UnsafePointer<Int8>>) {
+ let native = Unmanaged<Quickjs>.fromOpaque(userdata!).takeUnretainedValue()
+ let theTag = String(cString: tag!)
+ let theMessage = String(cString: message!)
+
+ switch level {
+ case TALER_WALLET_LOG_ERROR:
+ native.logger.error("\(theTag, privacy: .public) \(theMessage, privacy: .public)")
+ case TALER_WALLET_LOG_WARN:
+ native.logger.warning("\(theTag, privacy: .public) \(theMessage, privacy: .public)")
+ case TALER_WALLET_LOG_MESSAGE:
+ native.logger.notice("\(theTag, privacy: .public) \(theMessage, privacy: .public)")
+ case TALER_WALLET_LOG_INFO:
+ native.logger.info("\(theTag, privacy: .public) \(theMessage, privacy: .public)")
+ case TALER_WALLET_LOG_TRACE:
+ native.logger.trace("\(theTag, privacy: .public) \(theMessage, privacy: .public)")
+ default: break
+ }
+}
+// MARK: -
public class Quickjs {
var talerWalletInstance: OpaquePointer!
public weak var messageHandler: QuickjsMessageHandler?
+ var logger: Logger
public init() {
+ self.logger = Logger(subsystem: "net.taler.gnu", category: "QuickJS")
self.talerWalletInstance = TALER_WALLET_create()
TALER_WALLET_set_message_handler(talerWalletInstance,
notification_callback,
Unmanaged.passUnretained(self).toOpaque())
+ TALER_WALLET_set_log_handler(talerWalletInstance,
+ logging_callback,
+ Unmanaged.passUnretained(self).toOpaque())
TALER_WALLET_run(talerWalletInstance);
}