java中日志的若干问题
简单记录下做日志的几个问题:
1 明确思路
明确调用什么接口以及所需传入的参数:
如图接口描述:
2 编写的日志工具LogUtil
2.1 上传参数到指定接口
code如下,仅供参考。参数自定,HttpClientUtils也是自己定义的。
import net.sf.json.JSONObject;
import org.apache.log4j.Logger;
import javax.servlet.http.HttpServletRequest;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.*;
public final class LogUtil {
private static final Logger logger = Logger.getLogger(LogUtil.class);
public static final int GAMEBOX_MANAGER_SYSTEM_ID = 1;
public static final int APPSTORE_MANAGER_SYSTEM_ID = 2;
//调用的日志记录接口
private static final String url = "*********";
public static void sendLog(int systemId, int moduleId, String objectName, String objectId, String optType,
HttpServletRequest request) {
try {
Map<String, String> map = new HashMap<>();
map.put("systemId", String.valueOf(systemId));
map.put("moduleId", String.valueOf(moduleId));
map.put("objectName", objectName);
map.put("objectId", objectId);
map.put("optType", optType);
AdminUser adminUser = (AdminUser) request.getSession(true).getAttribute("adminUser");
String optAccount = "unknown";
if(adminUser != null) {
optAccount = adminUser.getUsername();
}
map.put("optAccount", optAccount);
DateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String optTimeStr = format.format(new Date());
map.put("optTime", optTimeStr);
String result = HttpClientUtils.httpGet(url, map);
JSONObject json = JSONObject.fromObject(result);
if (json.getInt("code") != 1) {
logger.error("提交日志异常: " + result);
}
} catch (Exception e) {
logger.error(e);
}
}
public static void sendLog(int moduleId, String objectName, String objectId, String optType,
HttpServletRequest request){
sendLog(GAMEBOX_MANAGER_SYSTEM_ID, moduleId, objectName, objectId, optType, request);
}
private LogUtil() {
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.apache.commons.httpclient.Header;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.HttpMethod;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.HeadMethod;
import org.apache.commons.httpclient.methods.PostMethod;
import org.apache.commons.httpclient.methods.multipart.MultipartRequestEntity;
import org.apache.commons.httpclient.methods.multipart.Part;
import org.apache.commons.httpclient.params.HttpMethodParams;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.Sets;
public final class HttpClientUtils {
private static final Logger log = LoggerFactory.getLogger(HttpClientUtils.class);
public static final String USER_AGENT = "HttpClient/3.1/PP";
public static final int UNKNOWN_HTTP_CODE = 600;
public static Long getLastModified(String urlAsStr){
int code = 200;
long timestamp = System.currentTimeMillis();
try{
URL url = new URL(urlAsStr);
URLConnection urlc = url.openConnection();
return urlc.getLastModified();
}catch(Exception ex){
log.error("Fail to get last-modified: {}", new Object[]{urlAsStr}, ex);
}
return null;
}
public static final String httpGet(String url){
HttpClient client = new HttpClient();
client.getHttpConnectionManager().getParams().setConnectionTimeout(2000);
GetMethod method = new GetMethod(url);
method.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET,"utf-8");
method.addRequestHeader("User-Agent", USER_AGENT);
long timestamp = System.currentTimeMillis();
int code = UNKNOWN_HTTP_CODE;
try {
code = client.executeMethod(method);
String msg = method.getResponseBodyAsString();
return msg;
} catch (HttpException e) {
log.error("httpGet error with url: " + url);
} catch (IOException e) {
log.error("httpGet error with url: " + url);
}
return null;
}
public static final String httpGet(String url, Map<String, String> params){
return httpGet(url, params, null);
}
public static final int httpGetReturnCode(String url, Map<String, String> params){
return httpGetReturnCode(url, params, null);
}
public static final int httpGetReturnCode(String url){
return httpGetReturnCode(url, null);
}
public static final String httpGetNTimes(String url, Map<String, String> params, int times){
return httpGetNTimes(url, params, null, times);
}
public static final String httpGetNTimes(String url, Map<String, String> params, Map<String, String> headers, int times){
for(int i = 0; i<times; ++i){
String response = httpGet(url, params, headers);
if(response != null){
return response;
}
}
return null;
}
public static final String httpPostNTimes(String url, Map<String, String> params, int times){
return httpPostNTimes(url, params, null, times);
}
public static final String httpPostNTimes(String url, Map<String, String> params, Map<String, String> headers, int times){
for(int i = 0; i<times; ++i){
String response = httpPost(url, params, headers);
if(response != null){
return response;
}
}
return null;
}
public static final Map<String, Object> httpGetNTimesToMap(String url, Map<String, String> params, int times){
return httpGetNTimesToMap(url, params, null, times);
}
public static final Map<String, Object> httpGetNTimesToMap(String url, Map<String, String> params, Map<String, String> headers, int times){
St