Skip to content

Commit 2b8e6eb

Browse files
committed
Feature: Support log api
1 parent b4aa3d8 commit 2b8e6eb

File tree

4 files changed

+57
-9
lines changed

4 files changed

+57
-9
lines changed

ClashX.xcodeproj/project.pbxproj

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
495A44D320D267D000888A0A /* LaunchAtLogin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 495A44D220D267D000888A0A /* LaunchAtLogin.swift */; };
2525
4966E9E32118153A00A391FB /* NSUserNotificationCenter+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */; };
2626
4966E9E6211824F300A391FB /* NSImage+extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4966E9E5211824F300A391FB /* NSImage+extension.swift */; };
27+
496BDEE021196F1E00C5207F /* Logger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 496BDEDF21196F1E00C5207F /* Logger.swift */; };
2728
497F0DF320DE2FE50077AD41 /* Icon.icns in Resources */ = {isa = PBXBuildFile; fileRef = 497F0DF220DE2FE50077AD41 /* Icon.icns */; };
2829
4989F98020D01C8F0001E564 /* clash.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4989F97E20D01C8F0001E564 /* clash.a */; };
2930
4989F98420D02D200001E564 /* Country.mmdb in Resources */ = {isa = PBXBuildFile; fileRef = 4989F98320D02D200001E564 /* Country.mmdb */; };
@@ -90,6 +91,7 @@
9091
495A44D220D267D000888A0A /* LaunchAtLogin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LaunchAtLogin.swift; sourceTree = "<group>"; };
9192
4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSUserNotificationCenter+Extension.swift"; sourceTree = "<group>"; };
9293
4966E9E5211824F300A391FB /* NSImage+extension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "NSImage+extension.swift"; sourceTree = "<group>"; };
94+
496BDEDF21196F1E00C5207F /* Logger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Logger.swift; sourceTree = "<group>"; };
9395
497F0DF220DE2FE50077AD41 /* Icon.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = Icon.icns; sourceTree = "<group>"; };
9496
4989F97E20D01C8F0001E564 /* clash.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = clash.a; sourceTree = "<group>"; };
9597
4989F97F20D01C8F0001E564 /* clash.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = clash.h; sourceTree = "<group>"; };
@@ -193,6 +195,7 @@
193195
495A44D220D267D000888A0A /* LaunchAtLogin.swift */,
194196
4966E9E22118153A00A391FB /* NSUserNotificationCenter+Extension.swift */,
195197
4966E9E5211824F300A391FB /* NSImage+extension.swift */,
198+
496BDEDF21196F1E00C5207F /* Logger.swift */,
196199
);
197200
path = Basic;
198201
sourceTree = "<group>";
@@ -530,6 +533,7 @@
530533
495A44D320D267D000888A0A /* LaunchAtLogin.swift in Sources */,
531534
49CF3B2120CD7463001EBF94 /* AppDelegate.swift in Sources */,
532535
4952C3CB2116E952004A4FA8 /* PreferencesWindowController.swift in Sources */,
536+
496BDEE021196F1E00C5207F /* Logger.swift in Sources */,
533537
4913C82321157D0200F6B87C /* Notification.swift in Sources */,
534538
492C4871210EF62E004554A0 /* ClashConfig.swift in Sources */,
535539
492C4869210EE6B9004554A0 /* ApiRequest.swift in Sources */,

ClashX/AppDelegate.swift

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
4545
self.updateProxyList()
4646
}
4747
setupData()
48-
48+
// os_log(<#T##message: StaticString##StaticString#>, <#T##args: CVarArg...##CVarArg#>)
4949
}
5050

5151

@@ -59,7 +59,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
5959
NotificationCenter.default.rx.notification(kShouldUpDateConfig).bind {
6060
[unowned self] (note) in
6161
self.syncConfig(){
62-
self.resetTrafficMonitor()
62+
self.resetStreamApi()
6363
}
6464
}.disposed(by: disposeBag)
6565

@@ -81,9 +81,6 @@ class AppDelegate: NSObject, NSApplicationDelegate {
8181
en in
8282
let enable = en ?? false
8383
self.proxySettingMenuItem.state = enable ? .on : .off
84-
let image =
85-
NSImage(named: NSImage.Name(rawValue: "menu_icon"))!.tint(color: enable ? NSColor.black : NSColor.gray)
86-
((self.statusItem.view) as! StatusItemView).imageView.image = image
8784
}.disposed(by: disposeBag)
8885

8986
ConfigManager.shared
@@ -175,7 +172,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
175172
syncConfig(){
176173
self.selectProxyGroupWithMemory()
177174
DispatchQueue.main.asyncAfter(deadline:DispatchTime.now() + 1, execute: {
178-
self.resetTrafficMonitor()
175+
self.resetStreamApi()
179176
})
180177
}
181178
}
@@ -188,11 +185,15 @@ class AppDelegate: NSObject, NSApplicationDelegate {
188185
}
189186
}
190187

191-
func resetTrafficMonitor() {
188+
func resetStreamApi() {
192189
ApiRequest.shared.requestTrafficInfo(){ [weak self] up,down in
193190
guard let `self` = self else {return}
194191
((self.statusItem.view) as! StatusItemView).updateSpeedLabel(up: up, down: down)
195192
}
193+
194+
ApiRequest.shared.requestLog { (type, msg) in
195+
Logger.log(msg: msg)
196+
}
196197
}
197198

198199

@@ -249,7 +250,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
249250
@IBAction func actionUpdateConfig(_ sender: Any) {
250251
ApiRequest.requestConfigUpdate() { [unowned self] success in
251252
if (success) {
252-
self.syncConfig(){self.resetTrafficMonitor()}
253+
self.syncConfig(){self.resetStreamApi()}
253254
NSUserNotificationCenter
254255
.default
255256
.post(title: "Reload Config Succeed", info: "succees")

ClashX/Basic/Logger.swift

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
//
2+
// Logger.swift
3+
// ClashX
4+
//
5+
// Created by CYC on 2018/8/7.
6+
// Copyright © 2018年 west2online. All rights reserved.
7+
//
8+
9+
import Foundation
10+
import os
11+
12+
class Logger {
13+
static let shared = Logger()
14+
var logger:OSLog?
15+
private init() {
16+
if #available(OSX 10.12, *) {
17+
self.logger = OSLog(subsystem: "com.clashX", category: "clashX")
18+
} else {
19+
}
20+
}
21+
22+
static func log(msg:String) {
23+
if #available(OSX 10.12, *) {
24+
os_log("%@", log: shared.logger!, type: .default, msg)
25+
} else {
26+
NSLog("%@", msg)
27+
}
28+
}
29+
}

ClashX/General/ApiRequest.swift

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ class ApiRequest{
1515
static let shared = ApiRequest()
1616

1717
var trafficReq:DataRequest? = nil
18-
18+
var logReq:DataRequest? = nil
19+
1920
static func requestConfig(completeHandler:@escaping ((ClashConfig)->())){
2021
request(ConfigManager.apiUrl + "/configs", method: .get).responseData{
2122
res in
@@ -36,6 +37,19 @@ class ApiRequest{
3637
}
3738
}
3839

40+
func requestLog(callback:@escaping ((String,String)->()) ){
41+
self.logReq?.cancel()
42+
43+
self.logReq =
44+
request(ConfigManager.apiUrl + "/logs").stream {(data) in
45+
if let jsonData = try? JSONSerialization.jsonObject(with: data) as? [String:String] {
46+
let type = jsonData!["type"] ?? "info"
47+
let payload = jsonData!["payload"] ?? ""
48+
callback(type,payload)
49+
}
50+
}
51+
}
52+
3953
static func requestConfigUpdate(callback:@escaping ((Bool)->())){
4054
let success = updateAllConfig()
4155
callback(success==0)

0 commit comments

Comments
 (0)