1:导包
需要导入log4j2的2个依赖
2:log4j2.xml配置文件
命令:log4j2.xml 放置在./log4j2路径下 并且要将log4j2文件夹添加到esclipse Source目录下
<?xml version="1.0" encoding="UTF-8"?>
<Configuration>
<!-- 日志输出的位置 -->
<Properties>
<!-- 保存在当前路径的logs文件夹下 -->
<Property name="basePath">./logs</Property>
</Properties>
<!-- 日志输出的位置 -->
<Appenders>
<!-- filePattern表示滚动一天记录日志命名 -->
<RollingFile name="file" fileName="${basePath}/outInfo.log"
filePattern="${basePath}/test-%d{yyyy-MM-dd}.log">
<PatternLayout charset="UTF-8" pattern="%d{YYY-MM-dd-HH:mm:ss} %-5level %c{1} -%msg%n" />
<Policies>
<!-- interval="1"基于时间触发RollingFile 表示滚动一天记录日志 -->
<TimeBasedTriggeringPolicy interval="1"
modulate="true" />
<SizeBasedTriggeringPolicy size="10 MB" />
</Policies>
</RollingFile>
<!-- 日志在控制台输出用 Console -->
<Console name="ConsoleOut">
<!-- 日志显示的风格 -->
<PatternLayout pattern="%d{YYY-MM-dd-HH:mm:ss} %-5level %c{1} -%msg%n" />
</Console>
</Appenders>
<Loggers>
<!-- 日志输出级别为info -->
<Root level="info">
<!-- 前面有定义RollingFile的名称为file -->
<AppenderRef ref="file" />
</Root>
</Loggers>
</Configuration>
3:Java代码实现
package cn.RunLinuxCommond.Runner;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
*
*
*/
public class RunCommond {
private static final Logger log = LogManager.getLogger(RunCommond.class.getName());
public static void main(String[] args) {
String cmd = "netstat -apn|grep " + args[0] + "|grep 'ESTABLISHED'|wc -l";//监控TCP连接数的Liunx命令
//循环运行 实现实时刷新监控
while (true) {
List<String> runners = Runners(cmd);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
int tcps = Integer.parseInt(runners.get(0));
if (tcps < Integer.parseInt(args[1])) {
System.err.println("[" + df.format(new Date()) + "]" + "Error..... 目前连接Port:" + args[0] + "预期数量是:"+args[1]+"--实际连接数为:"+ runners.get(0));
log.error("....目前连接Port:" + args[0] + "预期数量是:"+args[1]+"--实际连接数为:--"+ runners.get(0));
} else {
System.out.println("[" + df.format(new Date()) + "]" + "Running..... 目前连接Port:" + args[0] + "的数量是:"
+ runners.get(0));
log.info("....目前连接Port:" + args[0] + "的数量是:" + runners.get(0));
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static List<String> Runners(String commonds) {
InputStreamReader isr =null;
BufferedReader br = null;
List<String> list = new ArrayList<>();
Runtime runtime = Runtime.getRuntime();
try {
String[] cmd = new String[] { "/bin/sh", "-c", commonds };
Process proc = runtime.exec(cmd);
InputStream stderr = proc.getInputStream();
isr = new InputStreamReader(stderr, "GBK");
br = new BufferedReader(isr);
String line = "";
while ((line = br.readLine()) != null) {
list.add(line);
}
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
br.close();
isr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return list;
}
}
4:打包export成可执行的jar包
4.1:右击项目-->export
4.2:选择 Runnable JAR file --->Next
4.3:命名导出jar包