2019-04-16

  1. 启动一个线程 (线程里面 每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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容