ios - 在 swift 项目中集成 LogglyLogger-CocoaLumberjack
问题描述
我正在尝试在我的 swift 项目中使用LogglyLogger-CocoaLumberjack 。
我在 xCode 中收到此错误。
Enum case 'verbose' has no associated values
我无法解决这个问题。
我实际上是在尝试在 swift 5 中翻译 Objective-C 代码。这是我的 swift 函数
在 appDelegate.swift 类中
func initLoggly(){
// static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
let ddLogLevel:DDLogLevel = .verbose
// LogglyLogger *logglyLogger = [[LogglyLogger alloc] init];
let logglyLogger = LogglyLogger()
// [logglyLogger setLogFormatter:[[LogglyFormatter alloc] init]];
logglyLogger.logFormatter = LogglyFormatter()
// logglyLogger.logglyKey = @"your-loggly-api-key";
logglyLogger.logglyKey = "XXXXXXXXXXXX-XXXXXX"
//
// // Set posting interval every 15 seconds, just for testing this out, but the default value of 600 seconds is better in apps
// // that normally don't access the network very often. When the user suspends the app, the logs will always be posted.
// logglyLogger.saveInterval = 15;
logglyLogger.saveInterval = 15
// [DDLog addLogger:logglyLogger];
DDLog.add(logglyLogger)
// // Do some logging
// DDLogVerbose(@"{\"myJsonKey\":\"some verbose json value\"}");
// ddLogLevel.verbose("{\"initloggly\":\"some verbose json value\"}") // also tried this, error ==> Enum case 'verbose' cannot be used as an instance member
DDLogLevel.verbose("{\"initloggly\":\"some verbose json value\"}") // Here is the error on this line
}
请指出我做错了什么!
解决方案
这个库很大程度上基于 Swift 无法访问的 C 预处理器宏。
您可能需要在 Objective-C 中编写一小组使用这些宏的包装函数,这些函数又可以从 Swift 调用。
这是一个示例:
LogglyWrapper.h:
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@interface LogglyWrapper : NSObject
+(void) logVerbose:(NSString*) msg;
@end
NS_ASSUME_NONNULL_END
和 LogglyWrapper.m:
#import "LogglyWrapper.h"
#import <LogglyLogger.h>
@implementation LogglyWrapper
static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
+(void) logVerbose:(NSString*) msg {
DDLogVerbose(@"%@", msg);
}
@end
Swift 的用法:
LogglyWrapper.logVerbose("foo")
推荐阅读
- javascript - discord.js 更新了,我不明白新的 ReactionCollector
- koin - 创建实现 2 个接口的单例对象
- python - 如何在python中以快速的方式从字符串列表中创建词汇表
- java - 在 Java 中使用套接字传输二进制数据
- winforms - 尝试在 MSVS Enterprise 2019 16.4.6 中使用 .NET 核心在 C++ CLR 中制作 GUI 程序时出现致命错误 c1001
- c - 用指针合并C中的函数
- c# - .Net Web API - Managers vs. Service vs Repository - 我的逻辑应该驻留在哪里?
- javascript - 从打字稿转换为传统节点
- google-cloud-platform - 如何使 Google Cloud Storage 存储桶仅追加?
- python - 无法查看管理面板上上传的图像