diff --git a/src/main/java/run/halo/app/event/logger/LogEvent.java b/src/main/java/run/halo/app/event/logger/LogEvent.java index d863536a9..650e18126 100644 --- a/src/main/java/run/halo/app/event/logger/LogEvent.java +++ b/src/main/java/run/halo/app/event/logger/LogEvent.java @@ -1,10 +1,15 @@ package run.halo.app.event.logger; import org.springframework.context.ApplicationEvent; +import org.springframework.web.context.request.ServletRequestAttributes; +import org.springframework.web.context.support.ServletContextScope; import run.halo.app.model.enums.LogType; import run.halo.app.model.params.LogParam; +import run.halo.app.utils.ServletUtils; import run.halo.app.utils.ValidationUtils; +import javax.servlet.ServletContext; + /** * @author johnniang * @date 19-4-20 @@ -25,6 +30,9 @@ public class LogEvent extends ApplicationEvent { // Validate the log param ValidationUtils.validate(logParam); + // Set ip address + logParam.setIpAddress(ServletUtils.getRequestIp()); + this.logParam = logParam; } diff --git a/src/main/java/run/halo/app/event/logger/LogEventListener.java b/src/main/java/run/halo/app/event/logger/LogEventListener.java index 7f9b57c48..262171a3c 100644 --- a/src/main/java/run/halo/app/event/logger/LogEventListener.java +++ b/src/main/java/run/halo/app/event/logger/LogEventListener.java @@ -26,6 +26,7 @@ public class LogEventListener { public void onApplicationEvent(LogEvent event) { // Convert to log Log logToCreate = event.getLogParam().convertTo(); + // Create log logService.create(logToCreate); } diff --git a/src/main/java/run/halo/app/model/entity/Log.java b/src/main/java/run/halo/app/model/entity/Log.java index 6dfdefb22..a28896375 100644 --- a/src/main/java/run/halo/app/model/entity/Log.java +++ b/src/main/java/run/halo/app/model/entity/Log.java @@ -60,7 +60,8 @@ public class Log extends BaseEntity { } // Get ip address - ipAddress = ServletUtils.getRequestIp(); + // ###!!! Do not get request IP from here due to asynchronous + // ipAddress = ServletUtils.getRequestIp(); if (ipAddress == null) { logKey = ""; diff --git a/src/main/java/run/halo/app/model/params/LogParam.java b/src/main/java/run/halo/app/model/params/LogParam.java index 03bacd722..f4a46e187 100644 --- a/src/main/java/run/halo/app/model/params/LogParam.java +++ b/src/main/java/run/halo/app/model/params/LogParam.java @@ -29,4 +29,12 @@ public class LogParam implements InputConverter { @NotBlank(message = "Log content must not be blank") @Size(max = 1023, message = "Log content must not be more than 1023") private String content; + + private String ipAddress; + + public LogParam(String logKey, LogType type, String content) { + this.logKey = logKey; + this.type = type; + this.content = content; + } }