XcodeSwift/AliyunLogSwift/AppDelegate.swift (69 lines of code) (raw):

// // AppDelegate.swift // AliyunLogSwift // // Created by gordon on 2021/12/17. // import UIKit import AliyunLogProducer @objc class SpanProvider : NSObject, SLSSpanProviderProtocol { func provideResource() -> SLSResource { return SLSResource.of("res_from_swift_key", value: "swift_valu"); } func provideAttribute() -> [SLSAttribute] { return [SLSAttribute.of("attr_from _swift_key", value: "swift_value")]; } } @main class AppDelegate: UIResponder, UIApplicationDelegate { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { // Override point for customization after application launch. let utils = DemoUtils.shared let dict = ProcessInfo.processInfo.environment if (dict["PCONFIG_ENABLE"] != nil) { utils.endpoint = dict["PEND_POINT"] ?? "" utils.project = dict["PLOG_PROJECT"] ?? "" utils.logstore = dict["PLOG_STORE"] ?? "" utils.pluginAppId = dict["PPLUGIN_APPID"] ?? "" utils.accessKeyId = dict["PACCESS_KEYID"] ?? "" utils.accessKeySecret = dict["PACCESS_KEY_SECRET"] ?? "" utils.secKey = dict["PNETWORK_SECKEY"] ?? "" } // SLSLogV("endpoint: %@", utils.endpoint) // SLSLogV("project: %@", utils.project) // SLSLogV("logstore: %@", utils.logstore) // SLSLogV("pluginAppId: %@", utils.pluginAppId) // SLSLogV("accessKeyId: %@", utils.accessKeyId) // SLSLogV("accessKeySecret: %@", utils.accessKeySecret) let credentials = SLSCredentials() credentials.endpoint = "https://cn-hangzhou.log.aliyuncs.com" credentials.project = "yuanbo-test-1" credentials.accessKeyId = utils.accessKeyId credentials.accessKeySecret = utils.accessKeySecret credentials.instanceId = "ios-dev-ea64" let networkDiagnosisCredentials = credentials.createNetworkDiagnosisCredentials() networkDiagnosisCredentials.secretKey = utils.secKey; networkDiagnosisCredentials.siteId = "cn"; networkDiagnosisCredentials.putExtension("value", forKey: "key") networkDiagnosisCredentials.endpoint = "https://cn-hangzhou.log.aliyuncs.com" networkDiagnosisCredentials.project = "zaiyun-test5" let tracerCredentials = credentials.createTraceCredentials() tracerCredentials.instanceId = "sls-mall" tracerCredentials.endpoint = "https://cn-beijing.log.aliyuncs.com" tracerCredentials.project = "qs-demos" SLSCocoa.sharedInstance().initialize(credentials) { configuration in configuration.spanProvider = SpanProvider() configuration.enableTrace = true configuration.enableNetworkDiagnosis = true // configuration.enableInstrumentNSURLSession = true // configuration.spanProvider = SpanProvider() } // URLSessionInstrumentation(configuration: URLSessionInstrumentationConfiguration(shouldInstrument: { req in // if (req.url?.host?.contains("log.aliyuncs.com") ?? false) == true { // return false // } // return true // })) SLSCocoa.sharedInstance().registerCredentialsCallback { feature, result in NSLog("feature: %@, result: %@", feature, result) if (result == "LogProducerParametersInvalid" || result == "LogProducerSendUnauthorized") { // 请求新的token,然后把新的token更新到sdk let credentials = SLSCredentials() credentials.accessKeyId = utils.accessKeyId credentials.accessKeySecret = utils.accessKeySecret // credentials.securityToken = utils. // 不要忘记更新到sdk SLSCocoa.sharedInstance().setCredentials(credentials) } } let diagnosis = SLSNetworkDiagnosis.sharedInstance() // let dnsRequest = SLSDnsRequest() // dnsRequest.domain = "www.aliyun.com" // dnsRequest.context = "dns-test" // diagnosis.dns2(dnsRequest) { response in // NSLog("dns result: %@", response.content) // } // let httpRequest = SLSHttpRequest() // httpRequest.domain = "https://www.aliyun.com" // httpRequest.context = "http-test" // diagnosis.http2(httpRequest) { response in // NSLog("http result: %@", response.content) // } // let pingRequest = SLSPingRequest() // pingRequest.domain = "www.aliyun.com" // pingRequest.context = "ping-test" // diagnosis.ping2(pingRequest) { response in // NSLog("ping result: %@", response.content) // } // let tcppingRequest = SLSTcpPingRequest() // tcppingRequest.domain = "www.aliyun.com" // tcppingRequest.port = 80 // tcppingRequest.context = "tcpping-test" // diagnosis.tcpPing2(tcppingRequest) { response in // NSLog("tcpping result: %@", response.content) // } let mtrRequest = SLSMtrRequest() mtrRequest.domain = "www.aliyun.com" mtrRequest.context = "mtr-test" diagnosis.mtr2(mtrRequest) { response in NSLog("mtr result: %@", response.content) } return true } // MARK: UISceneSession Lifecycle func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { // Called when a new scene session is being created. // Use this method to select a configuration to create the new scene with. return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) } func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) { // Called when the user discards a scene session. // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. // Use this method to release any resources that were specific to the discarded scenes, as they will not return. } }