[log] add logger

This commit is contained in:
IrvingGao 2024-06-13 15:11:25 +08:00
parent 3e88c60997
commit a07f6b2954
1 changed files with 45 additions and 34 deletions

View File

@ -9,13 +9,22 @@ import json
from flask import Flask, render_template, request, redirect, url_for, make_response from flask import Flask, render_template, request, redirect, url_for, make_response
import socket import socket
import logging
logging.basicConfig(
filename='app.log', # 日志文件的名称
filemode='a', # 'a'代表追加模式,如果文件存在则追加内容
level=logging.DEBUG, # 日志级别DEBUG是最低的级别会记录所有级别的日志
format='%(asctime)s - %(levelname)s - %(message)s' # 日志的格式
)
try: try:
from takway.board import OrangePi from takway.board import OrangePi
led_enabled = True led_enabled = True
orangepi = OrangePi() orangepi = OrangePi()
except ImportError: except ImportError:
led_enabled = False led_enabled = False
print("Error importing OrangePi") logging.info("Error importing OrangePi")
# blue: APP # blue: APP
# red: hotspot # red: hotspot
@ -36,9 +45,9 @@ def network_error_light_1():
def network_error_light_2(): def network_error_light_2():
error_time = datetime.datetime.now() error_time = datetime.datetime.now()
while led_enabled: while led_enabled:
orangepi.set_led_on('red') orangepi.set_led_on('green')
time.sleep(0.25) time.sleep(0.25)
orangepi.set_led_off('red') orangepi.set_led_off('green')
time.sleep(0.25) time.sleep(0.25)
if error_time + datetime.timedelta(seconds=2) < datetime.datetime.now(): if error_time + datetime.timedelta(seconds=2) < datetime.datetime.now():
break break
@ -60,11 +69,11 @@ def edit_line_in_file(file_path, search_string, replacement_string):
else: else:
file.write(line) file.write(line)
print(f"{datetime.datetime.now()}: The line has been edited.") logging.info(f"{datetime.datetime.now()}: The line has been edited.")
except FileNotFoundError: except FileNotFoundError:
print(f"The file {file_path} does not exist.") logging.info(f"The file {file_path} does not exist.")
except IOError as e: except IOError as e:
print(f"An error occurred: {e}") logging.info(f"An error occurred: {e}")
# 获取私有IP地址 # 获取私有IP地址
@ -77,10 +86,10 @@ def save_local_ip():
# save local_ip to file # save local_ip to file
with open('local_ip.txt', 'w') as f: with open('local_ip.txt', 'w') as f:
f.write(local_ip) f.write(local_ip)
print(f"{datetime.datetime.now()}: Local IP address: {local_ip}") logging.info(f"{datetime.datetime.now()}: Local IP address: {local_ip}")
return local_ip return local_ip
except Exception as e: except Exception as e:
print(f"Error getting private IP: {e}") logging.info(f"Error getting private IP: {e}")
return None return None
app = Flask(__name__) app = Flask(__name__)
@ -111,29 +120,29 @@ def start_hotspot():
if led_enabled: if led_enabled:
orangepi.set_led_on('red') orangepi.set_led_on('red')
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f"{datetime.datetime.now()}: Error starting create_ap service: {e}") logging.info(f"{datetime.datetime.now()}: Error starting create_ap service: {e}")
def close_hotspot(): def close_hotspot():
# 关闭热点 # 关闭热点
try: try:
subprocess.Popen('sudo systemctl stop hotspot.service', shell=True) subprocess.Popen('sudo systemctl stop hotspot.service', shell=True)
print(f"{datetime.datetime.now()}: Stopping create_ap service") logging.info(f"{datetime.datetime.now()}: Stopping create_ap service")
if led_enabled: if led_enabled:
orangepi.set_led_off('red') orangepi.set_led_off('red')
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f"{datetime.datetime.now()}: Error stopping hotspot: {e}") logging.info(f"{datetime.datetime.now()}: Error stopping hotspot: {e}")
# 检测 Wi-Fi 连接状态 # 检测 Wi-Fi 连接状态
def check_wifi_connection(): def check_wifi_connection():
cmd = "nmcli dev status" cmd = "nmcli dev status"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True) result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
time.sleep(0.5) time.sleep(2)
output = result.stdout.strip() output = result.stdout.strip()
lines = output.split("\n")[1:] # Skip the header line lines = output.split("\n")[1:] # Skip the header line
for line in lines: for line in lines:
columns = line.split() columns = line.split()
print(columns) logging.info(columns)
''' '''
['wlan0', 'wifi', 'disconnected', '--'] ['wlan0', 'wifi', 'disconnected', '--']
['p2p-dev-wlan0', 'wifi-p2p', 'disconnected', '--'] ['p2p-dev-wlan0', 'wifi-p2p', 'disconnected', '--']
@ -162,7 +171,7 @@ def check_wifi_connection():
network_error_light_1() network_error_light_1()
subprocess.Popen('sudo systemctl restart NetworkManager', shell=True) subprocess.Popen('sudo systemctl restart NetworkManager', shell=True)
# subprocess.run(['sudo', 'systemctl', 'restart', 'NetworkManager'], check=True) # subprocess.run(['sudo', 'systemctl', 'restart', 'NetworkManager'], check=True)
time.sleep(0.5) time.sleep(2)
return check_wifi_connection() return check_wifi_connection()
return False, None return False, None
@ -172,9 +181,10 @@ def scan_wifi():
cmd = "nmcli dev wifi" cmd = "nmcli dev wifi"
result = subprocess.run(cmd, shell=True, capture_output=True, text=True) result = subprocess.run(cmd, shell=True, capture_output=True, text=True)
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f"{datetime.datetime.now()}: Error scanning Wi-Fi: {e}") logging.info(f"{datetime.datetime.now()}: Error scanning Wi-Fi: {e}")
network_error_light_2() network_error_light_2()
print(f"{datetime.datetime.now()}: Wi-Fi scan complete...") return []
logging.info(f"{datetime.datetime.now()}: Wi-Fi scan complete...")
ssid_list = [] ssid_list = []
wifi_list = [] wifi_list = []
output = result.stdout.strip() output = result.stdout.strip()
@ -182,9 +192,9 @@ def scan_wifi():
for line in lines: for line in lines:
columns = line.split() columns = line.split()
''' '''
print(columns) logging.info(columns)
for i, column in enumerate(columns): for i, column in enumerate(columns):
print(f"{i}: {column}") logging.info(f"{i}: {column}")
''' '''
# ['94:14:57:15:13:50', 'Meeting', 'MG', 'Infra', '1', '130', 'Mbit/s', '100', '****', 'WPA1', 'WPA2'] # ['94:14:57:15:13:50', 'Meeting', 'MG', 'Infra', '1', '130', 'Mbit/s', '100', '****', 'WPA1', 'WPA2']
@ -216,9 +226,9 @@ def scan_wifi():
if columns[i] == 'Mbit/s': if columns[i] == 'Mbit/s':
strength = columns[i+1] strength = columns[i+1]
break break
# print("MAC地址:", mac_address) # logging.info("MAC地址:", mac_address)
# print("Wi-Fi名称:", ssid) # logging.info("Wi-Fi名称:", ssid)
# print("强度:", strength) # logging.info("强度:", strength)
wifi_list.append({'ssid': ssid, 'signal': strength, 'mac': mac_address}) wifi_list.append({'ssid': ssid, 'signal': strength, 'mac': mac_address})
with open('scaned_wifi_list.json', 'w') as f: with open('scaned_wifi_list.json', 'w') as f:
@ -235,14 +245,14 @@ def connect_wifi(ssid, password):
output = subprocess.check_output(['nmcli', 'dev', 'wifi', 'connect', ssid, 'password', password]) output = subprocess.check_output(['nmcli', 'dev', 'wifi', 'connect', ssid, 'password', password])
output_str = output.decode('utf-8') # 将输出转换为字符串 output_str = output.decode('utf-8') # 将输出转换为字符串
if "successfully" in output_str: if "successfully" in output_str:
print(f"{datetime.datetime.now()}: Successfully connected to Wi-Fi: {ssid}") logging.info(f"{datetime.datetime.now()}: Successfully connected to Wi-Fi: {ssid}")
save_wifi(ssid, password) # 保存连接成功的Wi-Fi信息 save_wifi(ssid, password) # 保存连接成功的Wi-Fi信息
return True return True
else: else:
print(f"{datetime.datetime.now()}: Error connecting to Wi-Fi: {output_str}") logging.info(f"{datetime.datetime.now()}: Error connecting to Wi-Fi: {output_str}")
return False return False
except subprocess.CalledProcessError as e: except subprocess.CalledProcessError as e:
print(f"{datetime.datetime.now()}: Error connecting to Wi-Fi: {e}") logging.info(f"{datetime.datetime.now()}: Error connecting to Wi-Fi: {e}")
return False return False
# 关闭 Wi-Fi # 关闭 Wi-Fi
@ -252,11 +262,11 @@ def disconnect_wifi():
time.sleep(0.5) time.sleep(0.5)
output_str = output.decode('utf-8') # 将输出转换为字符串 output_str = output.decode('utf-8') # 将输出转换为字符串
if "successfully disconnected" in output_str: if "successfully disconnected" in output_str:
print(f"{datetime.datetime.now()}: Wi-Fi disconnected successfully") logging.info(f"{datetime.datetime.now()}: Wi-Fi disconnected successfully")
else: else:
print(f"{datetime.datetime.now()}: Error disconnecting from Wi-Fi: {output_str}") logging.info(f"{datetime.datetime.now()}: Error disconnecting from Wi-Fi: {output_str}")
except Exception as e: except Exception as e:
print(f"{datetime.datetime.now()}: Error disconnecting from Wi-Fi: {e}") logging.info(f"{datetime.datetime.now()}: Error disconnecting from Wi-Fi: {e}")
def connect_saved_wifi(scaned_wifi_list): def connect_saved_wifi(scaned_wifi_list):
wifi_list = load_saved_wifi() wifi_list = load_saved_wifi()
@ -303,7 +313,7 @@ def submit():
orangepi.set_led_on('red') orangepi.set_led_on('red')
ssid = request.form['ssid'] ssid = request.form['ssid']
password = request.form['password'] password = request.form['password']
print(f"{datetime.datetime.now()}: Connecting to Wi-Fi: {ssid} with password {password}") logging.info(f"{datetime.datetime.now()}: Connecting to Wi-Fi: {ssid} with password {password}")
# 关闭热点 # 关闭热点
close_hotspot() close_hotspot()
@ -318,7 +328,7 @@ def submit():
connected, wifi_ssid = check_wifi_connection() connected, wifi_ssid = check_wifi_connection()
if not connected: if not connected:
print(f"{datetime.datetime.now()}: Wi-Fi连接失败。") logging.info(f"{datetime.datetime.now()}: Wi-Fi连接失败。")
wifi_list = scan_wifi() wifi_list = scan_wifi()
start_hotspot() start_hotspot()
else: else:
@ -332,7 +342,7 @@ if __name__ == '__main__':
if debug_mode: if debug_mode:
disconnect_wifi() disconnect_wifi()
# wifi_list = scan_wifi() # wifi_list = scan_wifi()
# print(wifi_list) # logging.info(wifi_list)
# start_hotspot() # start_hotspot()
@ -346,16 +356,17 @@ if __name__ == '__main__':
connected, wifi_ssid = check_wifi_connection() connected, wifi_ssid = check_wifi_connection()
if connected: if connected:
print(f"{datetime.datetime.now()}: 系统已自动连接到 Wi-Fi 网络,退出程序") logging.info(f"{datetime.datetime.now()}: 系统已自动连接到 Wi-Fi 网络,退出程序")
close_app() close_app()
# 扫描Wi-Fi
wifi_list = scan_wifi() wifi_list = scan_wifi()
# 连接保存的Wi-Fi
connected, wifi_ssid = connect_saved_wifi(wifi_list) connected, wifi_ssid = connect_saved_wifi(wifi_list)
if connected: if connected:
print(f"{datetime.datetime.now()}: 系统已自动连接到 Wi-Fi 网络 {wifi_ssid},退出程序") logging.info(f"{datetime.datetime.now()}: 系统已自动连接到 Wi-Fi 网络 {wifi_ssid},退出程序")
close_app() close_app()
print(f"{datetime.datetime.now()}: 未连接到 Wi-Fi 网络, 开始热点模式") logging.info(f"{datetime.datetime.now()}: 未连接到 Wi-Fi 网络, 开始热点模式")
start_hotspot() start_hotspot()
app.run(host='0.0.0.0', port=80) app.run(host='0.0.0.0', port=80)