- 启动一个线程 (线程里面 每5秒执行一次)
线程里面 调用一个接口
如果接口无响应 打印一个日志 log4j 级别error
有响应 打印返回值 级别info
package com.conpany;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class AThread {
private static Logger logger = Logger.getLogger(AThread.class);
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
Runnable r1 = new AThreadRunnable();
Thread t1 = new Thread(r1);
t1.start();
logger.info("启动成功");
logger.error("启动失败");
}
}
import org.apache.log4j.Logger;
import java.io.IOException;
public class AThreadRunnable implements Runnable{
private static Logger logger = Logger.getLogger(AThreadRunnable.class);
public void run(){
try {
String httpPost = HttpUtils.httpPost("https://www.baidu.com/", "hello");
logger.error("ppp"+httpPost);
logger.info(httpPost);
logger.info("xxx");
System.out.println("ppp"+httpPost );
} catch (IOException e) {
e.printStackTrace();
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
### direct log messages to stdout ###
###stdout 输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %p %t %d %5p %c{1}:%L - %m%n
### 输出到日志文件 ###
### direct log messages to log file
##log4j.appender.A1=org.apache.log4j.RollingFileAppender
##log4j.appender.A1.File=./log/log.log
##log4j.appender.A1.layout=org.apache.log4j.PatternLayout
##log4j.appender.A1.layout.ConversionPattern= %p %t %d %5p %c{1}:%L - %m%n
##log4j.appender.A1.MaxFileSize=1MB
##log4j.appender.A1.MaxBackupIndex=2
#配置日志信息的格式(布局)
###(文件大小到达指定尺寸的时候产生一个新的文件)
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A1.Threshold=DEBUG
log4j.appender.A1.ImmediateFlush=true
log4j.appender.A1.Append=true
log4j.appender.A1.File=./log/log.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd-HH
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n
### root logger option ###
#在开发环境日志级别要设置为DEBUG、生产环境要设置为INFO或者ERROR
log4j.rootLogger=INFO,stdout,A1
##log4j.rootLogger=TRACE,stdout,A1
##log4j.rootLogger=ERROR,stdout,A1
##log4j.rootLogger=WARN,stdout,A1
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.apache.log4j.Logger;
import javax.net.ssl.X509TrustManager;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.nio.charset.Charset;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
/**
* Http 访问工具类
*
*/
public class HttpUtils {
public static Logger logger = Logger.getLogger(HttpUtils.class);
/**
* 证书信任管理器(用于https请求)
*
*/
public static class MyX509TrustManager implements X509TrustManager {
public void checkClientTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType)
throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return null;
}
}
/**
* GET请求 默认是 utf-8 编码
*
* @param url
* @param params
* @return
*/
public static String get(String url, String params, Charset charset) {
return httpget(url, charset);
}
/**
* GET请求
*
// * @param url
// * 请求URL
* @return
*/
public static String httpget(String url, Charset charset) {
//解决GET请求中空格报错问题-xxy-2/27
// params= params.replaceAll(" ", "+");
String result = "";
InputStream in = null;
BufferedReader br=null;
// if (null != params && !params.equals("")) {
// if (url.contains("?")) {// 包含?,后面加&直接填加
// url += "&" + params;
// } else {
// url += "?" + params;
// }
// }
try {
URL realUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();
conn.setRequestMethod("GET");
// 设置通用的请求属性
conn.setRequestProperty("Accept", "*/*");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.connect();
in = conn.getInputStream();
br=new BufferedReader(new InputStreamReader(in));
String line;
while ((line = br.readLine()) != null){
result+=line;
}
} catch (MalformedURLException e) {
logger.error("get-ERROR-",e);
} catch (IOException e) {
logger.error("get-ERROR-",e);
} finally {
try {
if (in != null) {
in.close();
}
} catch (IOException e) {
logger.error("get-ERROR-",e);
}
}
return result;
}
/**
* POST请求 默认是 utf-8 编码
*
* @param url
* @param params
* @return
*/
public static String post(String url, String params) {
return postForm(url, params);
}
/**
* POST请求
*
* @param url
* 请求URL
* @param param
* 请求参数,请求参数格式 name1=value1&name2=value2
* @return
*/
public static String postForm(String url, String param) {
PrintWriter out = null;
BufferedReader in = null;
StringBuffer result = new StringBuffer();
try {
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();
// 设置通用的请求属性
//conn.setRequestMethod("POST");
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setRequestProperty("accept", "*/*");
conn.setRequestProperty("connection", "Keep-Alive");
conn.setRequestProperty("user-agent",
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)");
// 发送POST请求必须设置如下两行
conn.setDoOutput(true);
conn.setDoInput(true);
out = new PrintWriter(conn.getOutputStream());
out.print(param);
out.flush();
in = new BufferedReader(new InputStreamReader(conn
.getInputStream(),"UTF-8"));
String line;
while ((line = in.readLine()) != null)
{
result.append(line);
}
} catch (Exception e) {
logger.error("post-ERROR-" + e.getMessage());
throw new RuntimeException(e);
} finally {
try {
try {
if (out != null) {
out.close();
}
} finally {
if (in != null) {
in.close();
}
}
} catch (Exception ex) {
}
}
return result.toString();
}
public static String postForm2(String url,String param) {
URL u = null;
HttpURLConnection con = null;
// 构建请求参数
System.out.println("send_url:" + url);
System.out.println("send_data:" + param);
// 尝试发送请求
try {
u = new URL(url);
con = (HttpURLConnection) u.openConnection();
//// POST 只能为大写,严格限制,post会不识别
con.setRequestMethod("POST");
con.setDoOutput(true);
con.setDoInput(true);
con.setUseCaches(false);
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
osw.write(param);
osw.flush();
osw.close();
} catch (Exception e) {
e.printStackTrace();
logger.error("postForm2-ERROR-" + e.getMessage());
} finally {
if (con != null) {
con.disconnect();
}
}
// 读取返回内容
StringBuffer buffer = new StringBuffer();
try {
//一定要有返回值,否则无法把请求发送给server端。
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
String temp;
while ((temp = br.readLine()) != null) {
buffer.append(temp);
buffer.append("\n");
}
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
}
public static String readInputStream(Charset charset,InputStream in) throws IOException {
BufferedReader reader = null ;
if(charset == null){
reader = new BufferedReader(new InputStreamReader(in,Charset.defaultCharset()));
}
else{
reader = new BufferedReader(new InputStreamReader(in,charset));
}
String line;
String result = "";
while ((line = reader.readLine()) != null){
result+=line;
}
reader.close();
return result;
}
private static RequestConfig requestConfig = null;
static
{
// 设置超时时间
requestConfig = RequestConfig.custom().setSocketTimeout(10000).setConnectTimeout(5000).build();
}
public static String httpPost(String url, String jsonParam) throws ClientProtocolException, IOException {
// post请求返回结果
CloseableHttpClient httpClient = HttpClients.createDefault();
JSONObject jsonResult = null;
String str = "";
HttpPost httpPost = new HttpPost(url);
// 设置请求和传输超时时间
httpPost.setConfig(requestConfig);
// 设置参数解决中文乱码
if (null != jsonParam) {
StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");
// entity.setContentEncoding("UTF-8");
entity.setContentType("application/json");
httpPost.setEntity(entity);
}
// 发送请求
CloseableHttpResponse result = httpClient.execute(httpPost);
if (result.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
// 读取服务器返回的json数据(然后解析)
str = EntityUtils.toString(result.getEntity(), "utf-8");
// 把json字符串转换成json对象
jsonResult = JSONObject.parseObject(str);
}
return str;
}
}```
```### direct log messages to stdout ###
###stdout 输出到控制台
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
###使用System.err输出
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern= %p %t %d %5p %c{1}:%L - %m%n
### 输出到日志文件 ###
### direct log messages to log file、
##log4j.appender.A1=org.apache.log4j.RollingFileAppender
##log4j.appender.A1.File=./log/log.log
##log4j.appender.A1.layout=org.apache.log4j.PatternLayout
##log4j.appender.A1.layout.ConversionPattern= %p %t %d %5p %c{1}:%L - %m%n
##log4j.appender.A1.MaxFileSize=1MB
##log4j.appender.A1.MaxBackupIndex=2
#配置日志信息的格式(布局)
###(文件大小到达指定尺寸的时候产生一个新的文件)
log4j.appender.A1=org.apache.log4j.DailyRollingFileAppender
#DEBUG以上级别是输出
log4j.appender.A1.Threshold=DEBUG
#是否立即输出
log4j.appender.A1.ImmediateFlush=true
#追加文件内容
log4j.appender.A1.Append=true
log4j.appender.A1.File=./log/log.log
log4j.appender.A1.DatePattern='.'yyyy-MM-dd-HH
#输出格式表达式 ConversionPattern转换模式
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n
### root logger option ###
#在开发环境日志级别要设置为DEBUG、生产环境要设置为INFO或者ERROR
log4j.rootLogger=INFO,stdout,A1
##log4j.rootLogger=TRACE,stdout,A1
##log4j.rootLogger=ERROR,stdout,A1