WinSW XML 配置参数介绍

文章目录

    • [1. 基本信息](#1. 基本信息)
    • [2. 启动命令](#2. 启动命令)
    • [3. 停止命令](#3. 停止命令)
    • [4. 日志配置](#4. 日志配置)
    • [5. 环境变量](#5. 环境变量)
    • [6. 启动模式](#6. 启动模式)
    • [7. 失败恢复](#7. 失败恢复)
    • [8. 服务依赖](#8. 服务依赖)
    • [9. 进程优先级](#9. 进程优先级)
    • [10. 运行账户](#10. 运行账户)
    • [11. 高级功能](#11. 高级功能)
    • 完整配置示例
    • 注意事项
    • 参考资料

WinSW(Windows Service Wrapper)是一个开源工具,用于将任意可执行文件(exe、jar、bat 等)包装成 Windows 服务。配置文件为 XML 格式(通常命名为 your-service.xml),所有参数都在 <service> 根节点下(注意:不是 <configuration>)。

以下是 WinSW 3.x 版本的完整参数列表,按功能分类整理。


1. 基本信息

参数 类型 必填 默认值 说明 示例
<id> 字符串 服务唯一标识符(用于 sc.exe 和注册表) <id>myapp</id>
<name> 字符串 服务显示名称(在服务管理器中显示) <name>My Spring Boot App</name>
<description> 字符串 服务描述信息 <description>xx管理系统</description>

2. 启动命令

参数 类型 必填 默认值 说明 示例
<executable> 字符串 要运行的可执行文件路径(支持环境变量) <executable>java.exe</executable>
<arguments> 字符串 传递给可执行文件的参数 <arguments>-jar app.jar --port=8080</arguments>
<workingdirectory> 路径 %BASE% 工作目录(服务启动时的当前目录) <workingdirectory>C:\myapp</workingdirectory>
<startarguments> 字符串 <arguments> 启动时的额外参数(一般不用) <startarguments>--debug</startarguments>

3. 停止命令

参数 类型 必填 默认值 说明 示例
<stopexecutable> 字符串 停止服务时执行的程序(可选) <stopexecutable>cmd</stopexecutable>
<stoparguments> 字符串 停止程序的参数 <stoparguments>/c stop.bat</stoparguments>
<stoptimeout> 时间 15 sec 停止超时时间(超时后强制终止) <stoptimeout>30 sec</stoptimeout>

4. 日志配置

参数 类型 默认值 说明 示例
<logmode> 字符串 rotate 日志模式: • none - 完全禁用文件日志(stdout/stderr 被丢弃)⚠️ • append - 追加到单个日志文件 • rotate - 按大小滚动(推荐) • roll-by-size - 同 rotate • roll-by-time - 按时间滚动 <logmode>rotate</logmode>
<logpath> 路径 %BASE%\logs 日志文件保存路径 <logpath>C:\logs</logpath>
<log> 块元素 新版日志配置(推荐) 见下方示例

日志配置示例

xml 复制代码
<!-- 推荐:按大小滚动 -->
<log mode="roll-by-size">
  <sizeThreshold>10240</sizeThreshold>  <!-- 单位:KB,10MB -->
  <keepFiles>8</keepFiles>               <!-- 保留 8 个历史文件 -->
</log>

<!-- 按时间滚动 -->
<log mode="roll-by-time">
  <period>1</period>           <!-- 滚动周期(天) -->
  <pattern>yyyy-MM-dd</pattern> <!-- 日志文件名日期格式 -->
</log>

<!-- 完全禁用(不推荐用于生产环境) -->
<log mode="none"/>

⚠️ 关于 <logmode>none</logmode>

  • 丢弃所有输出,无法排查问题
  • 适用于无需调试的稳定服务程序自带日志功能
  • 生产环境建议使用 roll-by-size 并合理设置保留文件数

5. 环境变量

参数 类型 说明 示例
<env> 块元素 设置环境变量(可配置多个) <env name="JAVA_HOME" value="C:\jdk"/>
xml 复制代码
<env name="PATH" value="%PATH%;C:\tools"/>
<env name="SPRING_PROFILES_ACTIVE" value="prod"/>

6. 启动模式

参数 类型 默认值 说明 示例
<startmode> 字符串 Automatic 服务启动类型: • Automatic - 自动启动 • Manual - 手动启动 • Disabled - 禁用 <startmode>Automatic</startmode>
<delayedAutoStart> 布尔 false 是否延迟自动启动(减少启动冲突) <delayedAutoStart>true</delayedAutoStart>

7. 失败恢复

参数 类型 说明 示例
<onfailure> 块元素 服务失败时的动作(新版语法,可多个) 见下方示例
xml 复制代码
<!-- 第1次失败:10秒后重启 -->
<onfailure action="restart" delay="10 sec"/>
<!-- 第2次失败:30秒后重启 -->
<onfailure action="restart" delay="30 sec"/>
<!-- 第3次及以后:不处理 -->
<onfailure action="none"/>

可用的 action 值:

  • restart - 重启服务
  • reboot - 重启计算机
  • none - 不处理

8. 服务依赖

参数 类型 说明 示例
<depend> 字符串 依赖的其他服务(逗号分隔) <depend>MySQL80,Redis</depend>

9. 进程优先级

参数 类型 默认值 说明 示例
<priority> 字符串 Normal 进程优先级: • IdleBelowNormalNormalAboveNormalHighRealtime(不推荐) <priority>High</priority>

10. 运行账户

参数 类型 说明 示例
<serviceaccount> 块元素 指定服务运行的账户(推荐) 见下方示例
xml 复制代码
<!-- 使用本地系统账户 -->
<serviceaccount>
  <domain>NT AUTHORITY</domain>
  <user>LocalService</user>
</serviceaccount>

<!-- 使用指定用户 -->
<serviceaccount>
  <domain>.</domain>
  <user>Administrator</user>
  <password>yourpassword</password>
  <allowservicelogon>true</allowservicelogon>
</serviceaccount>

11. 高级功能

参数 类型 说明 示例
<download> 块元素 启动前从 URL 下载文件 <download from="https://example.com/app.jar" to="app.jar"/>
<resetfailure> 时间 失败计数器重置时间 <resetfailure>1 day</resetfailure>

完整配置示例

xml 复制代码
<service>
  <!-- 基本信息 -->
  <id>myapp</id>
  <name>My Application</name>
  <description>Spring Boot 应用程序</description>
  
  <!-- 启动命令 -->
  <executable>java</executable>
  <arguments>-Xms512m -Xmx1024m -jar app.jar</arguments>
  <workingdirectory>C:\myapp</workingdirectory>
  
  <!-- 停止配置 -->
  <stoptimeout>30 sec</stoptimeout>
  
  <!-- 日志 -->
  <log mode="roll-by-size">
    <sizeThreshold>10240</sizeThreshold>
    <keepFiles>8</keepFiles>
  </log>
  
  <!-- 环境变量 -->
  <env name="JAVA_HOME" value="C:\jdk"/>
  
  <!-- 启动模式 -->
  <startmode>Automatic</startmode>
  <delayedAutoStart>true</delayedAutoStart>
  
  <!-- 失败恢复 -->
  <onfailure action="restart" delay="10 sec"/>
  <onfailure action="restart" delay="30 sec"/>
  <resetfailure>1 day</resetfailure>
  
  <!-- 依赖 -->
  <depend>MySQL80</depend>
  
  <!-- 优先级 -->
  <priority>Normal</priority>
</service>

注意事项

  1. 根节点是 <service>,不是 <configuration>
  2. 路径支持环境变量%BASE% 指向 exe 所在目录
  3. 时间单位secminhourday
  4. 大小单位:KB(千字节)
  5. <logmode>none</logmode> 慎用:生产环境建议保留日志便于排查问题

参考资料

相关推荐
埃博拉酱3 天前
VS Code Remote SSH 连接 Windows 服务器卡在"下载 VS Code 服务器":prcdn DNS 解析失败的诊断与 BITS 断点续传
windows·ssh·visual studio code
唐宋元明清21883 天前
.NET 本地Db数据库-技术方案选型
windows·c#
加号33 天前
windows系统下mysql多源数据库同步部署
数据库·windows·mysql
tryCbest3 天前
Windows环境下配置pip镜像源
windows·pip
呉師傅3 天前
火狐浏览器报错配置文件缺失如何解决#操作技巧#
运维·网络·windows·电脑
百事牛科技3 天前
保护文档安全:PDF限制功能详解与实操
windows·pdf
一个人旅程~3 天前
如何用命令行把win10/win11设置为长期暂停更新?
linux·windows·经验分享·电脑
一个假的前端男3 天前
[特殊字符] Flutter 安装完整指南 Windows—— 2026最新版
windows·flutter
倚肆4 天前
在 Windows Docker 中安装并配置 Nginx (映射 Windows 端口与路径)
windows·nginx·docker
破无差4 天前
拯救你的C盘
windows