Windows命令行窗口日志输出重定向方法

Windows命令行窗口日志输出重定向方法

文章分类:Ruby编程 关键字: windows 命令行 日志 输出 重定向
经常在windows下部署或运行一些B/S系统,由于windows命令行启动软件后,日志信息默认在命令行输出,如果希望将日志信息保留进行跟踪查看,可以将命令行输出重定向到文本文件中进行保存,具体方法如下: 

a) 备份相应组件命令行启动批处理文件并编辑添加如下内容(如某些采用WeblogicWebAPP部署的系统,运行信息会输出到weblogic server窗口中,可编辑weblogic的启动文件startWebLogic.cmd): 

set rdate=%date:~0,10% 
set logFileName=LOG_FILE_NAME_%rdate%-%time:~0,2%%time:~3,2%%time:~6%.txt 
set logPath=LOG_PATH 
set logFullName=%logPath%%logFileName% 
echo 日志文件记录于:%logFullName% 

START_COMMAND >>  %logFullName% 2>&1 

b) 将LOG_FILE_NAME替换为指定的日志文件名 
将LOG_PATH替换为指定的日志文件输出路径 
将START_COMMAND替换为组件启动命令 

例: 
set rdate=%date:~0,10% 
set logFileName= WebLogicLog_log_%rdate%-%time:~0,2%%time:~3,2%%time:~6%.txt 
set logPath=D:\RunInfo\LOG\ 
set logFullName=%logPath%%logFileName% 
echo 日志文件记录于:%logFullName% 

%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server >> %logFullName% 2>&1 

c) 完成以上步骤后保存编辑好的文件,并调用该命令进行启动。 

 
### 如何在 PyQt 应用程序中内嵌命令行窗口 要在PyQt应用程序中集成命令行界面,一种常见的方式是利用`QProcess`来启动并管理外部进程(如Python解释器或其他CLI工具)。这允许在一个独立的进程中运行命令行应用,并将其输入输出重定向到图形界面上的一个部件里。 #### 使用 QProcess 和 QTextEdit 来模拟终端行为 下面是一个简单的例子,展示了如何创建一个带有内置控制台的小型PyQt6 GUI程序: ```python from PyQt6.QtCore import Qt, QByteArray from PyQt6.QtGui import QFont from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QTextEdit, QLineEdit class ConsoleWidget(QWidget): def __init__(self): super().__init__() layout = QVBoxLayout() self.output_area = QTextEdit() font = QFont("Courier", 10) self.output_area.setFont(font) self.input_line = QLineEdit() self.input_line.returnPressed.connect(self.send_command) layout.addWidget(self.output_area) layout.addWidget(self.input_line) self.setLayout(layout) self.process = None self.init_process() def init_process(self): """Initialize the process.""" self.process = QtCore.QProcess(self) # Connect signals and slots. self.process.readyReadStandardOutput.connect(self.on_ready_read_standard_output) self.process.readyReadStandardError.connect(self.on_ready_read_standard_error) self.process.finished.connect(self.on_finished) program = "cmd.exe" if platform.system() == "Windows" else "/bin/bash" self.process.start(program) def send_command(self): command_text = str(self.input_line.text()) self.input_line.clear() self.write_to_console(f"> {command_text}\n") data = (command_text + "\n").encode("utf8") self.process.write(data) @QtCore.pyqtSlot() def on_ready_read_standard_output(self): result = self.process.readAllStandardOutput() text = bytes(result).decode("utf8") self.write_to_console(text) @QtCore.pyqtSlot() def on_ready_read_standard_error(self): result = self.process.readAllStandardError() text = bytes(result).decode("utf8") self.write_to_console(text) @QtCore.pyqtSlot(int, QtCore.QProcess.ExitStatus) def on_finished(self, exit_code, status): message = f"\nThe process has finished with code [{exit_code}] and status [{status}]\n" self.write_to_console(message) def write_to_console(self, msg): cursor = self.output_area.textCursor() cursor.movePosition(cursor.End) cursor.insertText(msg) self.output_area.setTextCursor(cursor) self.output_area.ensureCursorVisible() if __name__ == '__main__': import sys app = QApplication(sys.argv) # 创建QApplication实例[^3] main_window = QMainWindow() console_widget = ConsoleWidget() main_window.setCentralWidget(console_widget) main_window.resize(800, 600) main_window.setWindowTitle('Embedded Command Line Interface') main_window.show() sys.exit(app.exec()) # 启动事件循环[^4] ``` 此代码片段实现了以下功能: - 定义了一个名为 `ConsoleWidget` 的组件,它包含了用于显示输出日志区域 (`QTextEdit`) 和接收用户指令的单行编辑框 (`QLineEdit`) - 当按下回车键时触发发送命令给子进程的操作 - 子进程的标准输出和标准错误流被连接到了槽函数上,在接收到数据后会更新日志区的内容 - 进程结束时也会通知用户
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值