Feature: Add log level selection
This commit is contained in:
parent
894cb72e23
commit
dbf52fc7da
@ -29,6 +29,8 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
@IBOutlet weak var separatorLineTop: NSMenuItem!
|
||||
@IBOutlet weak var sepatatorLineEndProxySelect: NSMenuItem!
|
||||
|
||||
@IBOutlet weak var logLevelMenuItem: NSMenuItem!
|
||||
|
||||
var disposeBag = DisposeBag()
|
||||
let ssQueue = DispatchQueue(label: "com.w2fzu.ssqueue", attributes: .concurrent)
|
||||
var statusItemView:StatusItemView!
|
||||
@ -46,7 +48,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
self.syncConfig()
|
||||
}
|
||||
setupData()
|
||||
|
||||
updateLoggingLevel()
|
||||
}
|
||||
|
||||
|
||||
@ -102,6 +104,7 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
case .global:self.proxyModeGlobalMenuItem.state = .on
|
||||
case .rule:self.proxyModeRuleMenuItem.state = .on
|
||||
}
|
||||
|
||||
|
||||
self.proxyModeMenuItem.title = "Proxy Mode (\(config!.mode.rawValue))"
|
||||
|
||||
@ -181,6 +184,12 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
func updateLoggingLevel() {
|
||||
for item in self.logLevelMenuItem.submenu?.items ?? [] {
|
||||
item.state = item.title.lowercased() == ConfigManager.selectLoggingApiLevel.rawValue ? .on : .off
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
func startProxy() {
|
||||
ssQueue.async {
|
||||
@ -274,6 +283,13 @@ class AppDelegate: NSObject, NSApplicationDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
@IBAction func actionSetLogLevel(_ sender: NSMenuItem) {
|
||||
let level = ClashLogLevel(rawValue: sender.title.lowercased()) ?? .unknow
|
||||
ConfigManager.selectLoggingApiLevel = level
|
||||
updateLoggingLevel()
|
||||
resetStreamApi()
|
||||
}
|
||||
|
||||
@IBAction func actionImportBunchJsonFile(_ sender: NSMenuItem) {
|
||||
ConfigFileFactory.importConfigFile()
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
<customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="ClashX" customModuleProvider="target">
|
||||
<connections>
|
||||
<outlet property="autoStartMenuItem" destination="B1J-XB-BiZ" id="xaS-h5-qd0"/>
|
||||
<outlet property="logLevelMenuItem" destination="3Da-fL-Mzr" id="ZCW-Il-fOZ"/>
|
||||
<outlet property="proxyModeDirectMenuItem" destination="Np6-Pm-Lo3" id="DER-K7-DNW"/>
|
||||
<outlet property="proxyModeGlobalMenuItem" destination="yiM-U4-MNg" id="M7s-kl-aPh"/>
|
||||
<outlet property="proxyModeMenuItem" destination="jGT-1M-xJu" id="3Xj-xK-MJj"/>
|
||||
@ -86,7 +87,7 @@
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Config" id="tck-zU-JKQ">
|
||||
<items>
|
||||
<menuItem title="Generate Config" id="a4G-S3-jxT">
|
||||
<menuItem title="Generate Config" state="on" id="a4G-S3-jxT">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<menu key="submenu" title="Generate Config" id="IeJ-1Q-UaF">
|
||||
<items>
|
||||
@ -123,15 +124,27 @@
|
||||
<items>
|
||||
<menuItem title="ERROR" id="0iu-lB-eZN">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="actionSetLogLevel:" target="Voe-Tx-rLC" id="KEd-c4-cB8"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="WARNING" id="ko2-Ir-DxA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="actionSetLogLevel:" target="Voe-Tx-rLC" id="V2s-Xc-8lq"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="INFO" id="d8V-h0-0zF">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="actionSetLogLevel:" target="Voe-Tx-rLC" id="jeM-b7-3h6"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
<menuItem title="DEBUG" id="XIR-Go-fWA">
|
||||
<modifierMask key="keyEquivalentModifierMask"/>
|
||||
<connections>
|
||||
<action selector="actionSetLogLevel:" target="Voe-Tx-rLC" id="wcc-7Y-8Ke"/>
|
||||
</connections>
|
||||
</menuItem>
|
||||
</items>
|
||||
</menu>
|
||||
|
@ -36,7 +36,7 @@ class Logger {
|
||||
}
|
||||
|
||||
static func log(msg:String ,level:ClashLogLevel = .unknow) {
|
||||
shared.logToFile(msg: msg, level: level)
|
||||
shared.logToFile(msg: "[\(level.rawValue)] \(msg)", level: level)
|
||||
}
|
||||
|
||||
func logFilePath() -> String {
|
||||
|
@ -73,7 +73,7 @@ class ApiRequest{
|
||||
|
||||
logReq =
|
||||
alamoFireManager
|
||||
.request(ConfigManager.apiUrl + "/logs")
|
||||
.request(ConfigManager.apiUrl + "/logs?Level=\(ConfigManager.selectLoggingApiLevel.rawValue)")
|
||||
.stream {(data) in
|
||||
retry = 0
|
||||
if let jsonData = try? JSONSerialization.jsonObject(with: data) as? [String:String] {
|
||||
@ -111,7 +111,6 @@ class ApiRequest{
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static func requestProxyGroupList(completeHandler:@escaping (([String:[String:Any]])->())){
|
||||
request(ConfigManager.apiUrl + "/proxies", method: .get).responseJSON{
|
||||
res in
|
||||
|
@ -71,6 +71,15 @@ class ConfigManager {
|
||||
}
|
||||
}
|
||||
|
||||
static var selectLoggingApiLevel:ClashLogLevel {
|
||||
get{
|
||||
return ClashLogLevel(rawValue: UserDefaults.standard.string(forKey: "selectLoggingApiLevel") ?? "") ?? .info
|
||||
}
|
||||
set {
|
||||
UserDefaults.standard.set(newValue.rawValue, forKey: "selectLoggingApiLevel")
|
||||
}
|
||||
}
|
||||
|
||||
func refreshApiPort(){
|
||||
if let ini =
|
||||
parseConfig("\(NSHomeDirectory())/.config/clash/config.ini"),
|
||||
|
Loading…
Reference in New Issue
Block a user