diff --git a/README.md b/README.md
index 27970ff..dbcade1 100644
--- a/README.md
+++ b/README.md
@@ -55,10 +55,11 @@ Elasticsearch搜索功能 | ✔
HTTPS支持 | ✔
Redis数字型ID生成 | ✔
SpringTask定时任务支持 | ✔
-RestTemplate服务间调用 |
docker容器化部署 | ✔
配置区分生产和测试环境 | ✔
-ELK日志收集功能 |
+ELK日志收集功能 | ✔
+RestTemplate服务间调用 |
+RabbitMq异步通信 |
SpringSecurity权限管理功能 |
### 使用工具
diff --git a/document/elk/elk.md b/document/elk/elk.md
new file mode 100644
index 0000000..a7f6637
--- /dev/null
+++ b/document/elk/elk.md
@@ -0,0 +1,21 @@
+#windows下的elk环境搭建
+
+##下载
+下载页面:https://www.elastic.co/downloads/past-releases
+ElasticSearch:https://www.elastic.co/downloads/past-releases/elasticsearch-2-4-6
+Logstash:https://www.elastic.co/downloads/past-releases/logstash-2-4-0
+Kibana:https://www.elastic.co/downloads/past-releases/kibana-4-6-0
+
+##安装
+下载zip包并进行解压
+
+##运行
+
+###logstash配置运行
+添加logstash配置文件:logstash-springboot.conf
+安装logstash-codec-json_lines插件:plugin install logstash-codec-json_lines
+运行logstash命令:logstash -f logstash-springboot.conf
+
+##SpringBoot整合logstash
+引入依赖包:https://github.com/logstash/logstash-logback-encoder
+添加配置文件:logback-spring.xml
diff --git a/document/elk/logback-spring.xml b/document/elk/logback-spring.xml
new file mode 100644
index 0000000..4b7b6da
--- /dev/null
+++ b/document/elk/logback-spring.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ localhost:4560
+
+
+
+
+
+
+
+
diff --git a/document/elk/logstash-springboot.conf b/document/elk/logstash-springboot.conf
new file mode 100644
index 0000000..d23ce25
--- /dev/null
+++ b/document/elk/logstash-springboot.conf
@@ -0,0 +1,10 @@
+input {
+ tcp {
+ port => 4560
+ codec => json_lines
+ }
+}
+output{
+ elasticsearch { hosts => ["localhost:9200"] }
+ stdout { codec => rubydebug }
+}
\ No newline at end of file
diff --git a/mall-admin/pom.xml b/mall-admin/pom.xml
index 3ab2eaf..94acd68 100644
--- a/mall-admin/pom.xml
+++ b/mall-admin/pom.xml
@@ -85,6 +85,12 @@
aliyun-sdk-oss
2.5.0
+
+
+ net.logstash.logback
+ logstash-logback-encoder
+ 4.8
+
diff --git a/mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java b/mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java
index 5e5b5d1..50d3cb3 100644
--- a/mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java
+++ b/mall-admin/src/main/java/com/macro/mall/component/WebLogAspect.java
@@ -4,6 +4,7 @@ import com.macro.mall.bo.WebLog;
import com.macro.mall.util.JsonUtil;
import com.macro.mall.util.RequestUtil;
import io.swagger.annotations.ApiOperation;
+import net.logstash.logback.marker.Markers;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
@@ -22,7 +23,10 @@ import org.springframework.web.context.request.ServletRequestAttributes;
import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
/**
* 统一日志处理切面
@@ -53,7 +57,7 @@ public class WebLogAspect {
//获取当前请求对象
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
HttpServletRequest request = attributes.getRequest();
- //记录请求信息(可以记录到数据库中)
+ //记录请求信息(通过logstash传入elasticsearch)
WebLog webLog = new WebLog();
Object result = joinPoint.proceed();
Signature signature = joinPoint.getSignature();
@@ -73,7 +77,14 @@ public class WebLogAspect {
webLog.setStartTime(startTime.get());
webLog.setUri(request.getRequestURI());
webLog.setUrl(request.getRequestURL().toString());
- LOGGER.info("{}", JsonUtil.objectToJson(webLog));
+ Map logMap = new HashMap<>();
+ logMap.put("url",webLog.getUrl());
+ logMap.put("method",webLog.getMethod());
+ logMap.put("parameter",webLog.getParameter());
+ logMap.put("spendTime",webLog.getSpendTime());
+ logMap.put("description",webLog.getDescription());
+ // LOGGER.info("{}", JsonUtil.objectToJson(webLog));
+ LOGGER.info(Markers.appendEntries(logMap),JsonUtil.objectToJson(webLog));
return result;
}
diff --git a/mall-admin/src/main/resources/logback-spring.xml b/mall-admin/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..4b7b6da
--- /dev/null
+++ b/mall-admin/src/main/resources/logback-spring.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ localhost:4560
+
+
+
+
+
+
+
+
diff --git a/mall-demo/pom.xml b/mall-demo/pom.xml
index a6f865a..f330599 100644
--- a/mall-demo/pom.xml
+++ b/mall-demo/pom.xml
@@ -32,11 +32,11 @@
org.springframework.boot
- spring-boot-starter-thymeleaf
+ spring-boot-starter-web
org.springframework.boot
- spring-boot-starter-web
+ spring-boot-starter-thymeleaf
org.springframework.boot
@@ -71,6 +71,11 @@
pagehelper-spring-boot-starter
1.2.3
+
+ net.logstash.logback
+ logstash-logback-encoder
+ 4.8
+
diff --git a/mall-demo/src/main/resources/logback-spring.xml b/mall-demo/src/main/resources/logback-spring.xml
new file mode 100644
index 0000000..4b7b6da
--- /dev/null
+++ b/mall-demo/src/main/resources/logback-spring.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+ localhost:4560
+
+
+
+
+
+
+
+
diff --git a/mall-demo/src/test/java/com/macro/mall/MallDemoApplicationTests.java b/mall-demo/src/test/java/com/macro/mall/MallDemoApplicationTests.java
index eb22e8f..68052d4 100644
--- a/mall-demo/src/test/java/com/macro/mall/MallDemoApplicationTests.java
+++ b/mall-demo/src/test/java/com/macro/mall/MallDemoApplicationTests.java
@@ -1,16 +1,31 @@
package com.macro.mall;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.macro.mall.model.PmsProduct;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
public class MallDemoApplicationTests {
-
+ private Logger logger = LoggerFactory.getLogger(MallDemoApplicationTests.class);
@Test
public void contextLoads() {
}
+ @Test
+ public void testLogStash() throws Exception {
+ ObjectMapper mapper = new ObjectMapper();
+ PmsProduct product = new PmsProduct();
+ product.setId(1L);
+ product.setName("小米手机");
+ product.setBrandName("小米");
+ logger.info(mapper.writeValueAsString(product));
+ logger.error(mapper.writeValueAsString(product));
+ }
+
}