依据官网,包含以下几个部分:
文件结构
service
文件根节点必须为<service></service>
,该根节点下,包含对应的子节点内容配置
<service> <id></id> <description></description> <env name="" value=""/> <excutable></excutable> <arguments></arguments> <log mode="roll"></log> </service>
环境变量
env
能够提取name
中对应的系统环境变量值,设置到对应的本地内置value
变量中,如果环境变量不存在,则本地变量将不会发生替换,当前自定义变量名称为Winsw.exe
程序自动去生成,在当前同级节点中可以使用,也可以在服务启动的子进程中使用
..... <env name="环境变量名称" value="%本地自定义变量名称%"/> .....
示例:
..... <env name="JAVA_HOME" value="%Base%"/> <excutable>java %Base%/xxx.jar</excutable> .....
相对路径和默认路径
workingdirectory
相对路径能够被工作路径覆盖,同时,默认情况下,默认路径是对应目标子程序加载的配置文件appname.xml
的所在路径
....... <workingdirectory>相对路径/绝对路径</workingdirectory> .......
示例:
....... <workingdirectory>E:\Study\Servers\winswtest</workingdirectory> .......
配置实体节点
id
必须配置项,设定Windows
内部用于识别改服务的id,作为唯一值,必须在系统服务中唯一,由字母和数字组成
...... <id></id> ......
executable
必须配置项,用于设定可执行文件或者需要执行的指令配置,路径和Winsw.exe
可能不一致
...... <executable></executable> ......
name
服务显示名称的简写,可以添加其他的字符,名称不宜太长,如id
一般是需要当前服务系统中保持唯一
...... <name></name> ......
description
服务具体描述,可以添加其他字符,当服务被选择时,能够在Windows
服务管理中显示出来
..... <description></description> .....
startmode
设置服务的启动模式,包含常用包含如下值:
Automatic
,Manual
,Disabled
其他查阅[官方地址]https://docs.microsoft.com/en-us/windows/win32/cimwin32prov/changestartmode-method-in-class-win32-service,默认为Automatic
.... <startmode>Automatic</startmode> ....
delayedAutoStart
如果服务启动方式为自启方式,设置是否延时启动服务程序
<delayedAutoStart>true</delayedAutoStart>
该配置对Windows 7
以前老版本以及Windows Server 2008
及其以前的系统版本无效,可能会因为该配置,造成服务无法安装
depend
当前注册服务依赖其他的服务时,需要设定对应的其他服务id
配置
...... <depend>X</depend> ......
如果存在多个依赖,则配置多个依赖的相关服务id
..... <depend>X</depend> <depend>Y</depend> .....
日志操作
logpath
用于设置日志的输出路径,默认情况为日志输出路径与配置文件.xml
加载所在路径目录相同
..... <logpath>path</logpath> .....
Append mode (default)
附加模式,为默认服务执行模式,日志会以复加方式添加到对应日志文件内容中
..... <log mode="append"/> .....
Reset mode
重置模式,当前模式下,日志输出方式与append
类似,当时在每次服务重启后,服务将截断当前旧日志,
..... <log mode="reset"/> .....
Ignore mode
该模式下,忽略掉运行输出和运行错误,不做任何日志记录
..... <log mode="ignore"/> .....
Roll mode
工作原理与附加模式类似,通过配置设置的单日志文件大小,超出限制后,自动对停止满足单文件限制的日志文件写入,在新的日志文件中写入日志信息,文件一次一滚动方式进行日志文件名称设定和自增,例如,一个日志文件第一个叫roll.1.log
,当超过单文件设定大小后,会关闭roll.1.log
,向新的roll.2.log
日志中写入日志内容
..... <log mode="roll-by-size"> <sizeThreshold>102400</sizeThreshold> <keepFiles>8</keepFiles> </log> .....
其中sizeThreshold
单文件大小阀值,以kb
作为最小单位,keepFiles
保留历史日志文件数目
Roll by time mode
运行原理类似Roll
模式,但是不再是以单文件大小作为阀值,而是以时间段作为阀值,
....... <log mode="roll-by-time"> <pattern>yyyyMMdd</pattern> </log> .......
pattern
作为正则方式控制,对应输出文件的日志文件名称