47 changed files with 659 additions and 637 deletions
Binary file not shown.
@ -1,33 +0,0 @@ |
|||||
package org.nl.modules.log; |
|
||||
|
|
||||
import org.slf4j.Marker; |
|
||||
import org.slf4j.MarkerFactory; |
|
||||
|
|
||||
public enum LogMarkerTypeEnum { |
|
||||
DEFAULT("default", "默认日志"), |
|
||||
REQUEST("request", "请求日志"), |
|
||||
QUARTZ("quartz", "定时器日志"), |
|
||||
DEVICE_EXECUTE("device_execute", "设备执行日志"), |
|
||||
AGV_TASK_STATUS("agv_task_status", "agv任务状态日志"), |
|
||||
AGV_FEEDBACK_SERVLET("agv_feedback_servlet", "反馈AGV请求"), |
|
||||
AGV_LEAVE_SERVLET("agv_leave_servlet", "AGV请求离开"), |
|
||||
ACS_TO_ERP("acs_to_erp", "ACS请求ERP"), |
|
||||
ACS_TO_WMS("acs_to_wms", "ACS请求WMS"), |
|
||||
AUTO_CREATE_INST("auto_create_inst", "自动创建指令"), |
|
||||
NDC_SOCKET_CONNECTION_AUTORUN("ndc_socket_connection_autorun", "NDC自动连接"), |
|
||||
XZ_AGV_TASK_STATUS("xz_agv_task_status", "仙知AGV指令状态"), |
|
||||
WMS_TO_ACS("wms_to_acs", "WMS下发ACS"); |
|
||||
// 成员变量
|
|
||||
private String name; |
|
||||
private String code; |
|
||||
|
|
||||
// 构造方法
|
|
||||
private LogMarkerTypeEnum(String code, String name) { |
|
||||
this.code = code; |
|
||||
this.name = name; |
|
||||
} |
|
||||
|
|
||||
public static Marker getMarker(LogMarkerTypeEnum logType) { |
|
||||
return MarkerFactory.getMarker(logType.code); |
|
||||
} |
|
||||
} |
|
@ -1,9 +0,0 @@ |
|||||
package org.nl.modules.log; |
|
||||
|
|
||||
import org.slf4j.Marker; |
|
||||
import org.slf4j.MarkerFactory; |
|
||||
|
|
||||
public class LogMarkerUtil { |
|
||||
private static final Marker MARKER = MarkerFactory.getMarker("test_marker"); |
|
||||
|
|
||||
} |
|
@ -1,55 +0,0 @@ |
|||||
package org.nl.modules.log; |
|
||||
|
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent; |
|
||||
import cn.hutool.core.date.DateUtil; |
|
||||
import cn.hutool.core.util.IdUtil; |
|
||||
import cn.hutool.core.util.ObjectUtil; |
|
||||
import org.bson.Document; |
|
||||
import org.slf4j.Marker; |
|
||||
|
|
||||
import java.net.InetAddress; |
|
||||
import java.net.UnknownHostException; |
|
||||
|
|
||||
/** |
|
||||
* https://www.cnblogs.com/lzghyh/p/14913230.html
|
|
||||
* https://juejin.cn/post/6844903488896385037
|
|
||||
* https://cloud.tencent.com/developer/article/1384035
|
|
||||
* https://www.freesion.com/article/229560377/
|
|
||||
*/ |
|
||||
public class MongoDBAppender extends MongoDBAppenderBase<ILoggingEvent> { |
|
||||
public MongoDBAppender() { |
|
||||
super("loggingEvents"); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
protected Document toMongoDocument(ILoggingEvent eventObject) { |
|
||||
|
|
||||
final Document doc = new Document(); |
|
||||
doc.append("_id",IdUtil.simpleUUID()); |
|
||||
|
|
||||
doc.append("date", DateUtil.now()); |
|
||||
doc.append("source", source); |
|
||||
try { |
|
||||
doc.append("ip", InetAddress.getLocalHost().getHostAddress()); |
|
||||
} catch (UnknownHostException e) { |
|
||||
e.printStackTrace(); |
|
||||
} |
|
||||
|
|
||||
Marker marker = eventObject.getMarker(); |
|
||||
if (!ObjectUtil.isEmpty(marker)) { |
|
||||
doc.append("marker", marker.getName()); |
|
||||
}else { |
|
||||
doc.append("marker", "default"); |
|
||||
} |
|
||||
|
|
||||
doc.append("level", eventObject.getLevel().toString()); |
|
||||
doc.append("logger", eventObject.getLoggerName()); |
|
||||
doc.append("thread", eventObject.getThreadName()); |
|
||||
doc.append("message", eventObject.getFormattedMessage()); |
|
||||
if (eventObject.getMDCPropertyMap() != null && !eventObject.getMDCPropertyMap().isEmpty()) |
|
||||
doc.append("mdc", eventObject.getMDCPropertyMap()); |
|
||||
// ...
|
|
||||
return doc; |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -1,109 +0,0 @@ |
|||||
package org.nl.modules.log; |
|
||||
|
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent; |
|
||||
import ch.qos.logback.core.UnsynchronizedAppenderBase; |
|
||||
import cn.hutool.core.util.ObjectUtil; |
|
||||
import com.mongodb.MongoClient; |
|
||||
import com.mongodb.MongoClientOptions; |
|
||||
import com.mongodb.MongoCredential; |
|
||||
import com.mongodb.ServerAddress; |
|
||||
import com.mongodb.client.MongoCollection; |
|
||||
import com.mongodb.client.MongoDatabase; |
|
||||
import lombok.Data; |
|
||||
import org.bson.Document; |
|
||||
import org.slf4j.Marker; |
|
||||
|
|
||||
import java.net.UnknownHostException; |
|
||||
import java.util.Collections; |
|
||||
|
|
||||
/** |
|
||||
* MongoDBAppender适配类 |
|
||||
*/ |
|
||||
@Data |
|
||||
public abstract class MongoDBAppenderBase<E> extends UnsynchronizedAppenderBase<E> { |
|
||||
private MongoClient mongo; |
|
||||
MongoDatabase db; |
|
||||
private MongoCollection<Document> eventsCollection; |
|
||||
|
|
||||
private String host = "192.168.81.251"; // 地址
|
|
||||
private int port = 27017; // 端口号
|
|
||||
private String dbName = "db"; // 库名
|
|
||||
private String collectionName; // 集合名
|
|
||||
private String username; // 用户名
|
|
||||
private String password; // 密码
|
|
||||
protected String source; |
|
||||
|
|
||||
private int connectionsPerHost = 10; // 空闲线程池中最大链接数
|
|
||||
private int threadsAllowedToBlockForConnectionMultiplier = 5; //一个线程等待链接可用的最大等待毫秒数
|
|
||||
private int maxWaitTime = 1000 * 60 * 2; // 最长等待时间
|
|
||||
private int connectTimeout; |
|
||||
private int socketTimeout; |
|
||||
private int wtimeout; |
|
||||
|
|
||||
MongoDBAppenderBase(String collectionName) { |
|
||||
this.collectionName = collectionName; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public void start() { |
|
||||
try { |
|
||||
connectToMongoDB(); |
|
||||
super.start(); |
|
||||
} catch (UnknownHostException e) { |
|
||||
addError("Error connecting to MongoDB server: " + host + ":" + port, |
|
||||
e); |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
private void connectToMongoDB() throws UnknownHostException { |
|
||||
// 用户名 数据库 密码
|
|
||||
if (username != null && password != null) { |
|
||||
|
|
||||
MongoCredential credential = MongoCredential.createCredential( |
|
||||
username, dbName, password.toCharArray()); |
|
||||
ServerAddress serverAddress = new ServerAddress(host, port); |
|
||||
mongo = new MongoClient(serverAddress, Collections.singletonList(credential), buildOptions()); |
|
||||
} else { |
|
||||
mongo = new MongoClient(new ServerAddress(host, port), buildOptions()); |
|
||||
} |
|
||||
|
|
||||
db = mongo.getDatabase(dbName); |
|
||||
eventsCollection = db.getCollection(collectionName); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
private MongoClientOptions buildOptions() { |
|
||||
final MongoClientOptions.Builder options = new MongoClientOptions.Builder(); |
|
||||
options.connectionsPerHost(connectionsPerHost); |
|
||||
options.threadsAllowedToBlockForConnectionMultiplier(threadsAllowedToBlockForConnectionMultiplier); |
|
||||
options.maxWaitTime(maxWaitTime); |
|
||||
options.connectTimeout(connectTimeout); |
|
||||
options.socketTimeout(socketTimeout); |
|
||||
options.maxWaitTime(wtimeout); |
|
||||
return options.build(); |
|
||||
} |
|
||||
|
|
||||
protected abstract Document toMongoDocument(E event); |
|
||||
|
|
||||
@Override |
|
||||
protected void append(E eventObject) { |
|
||||
if (eventObject instanceof ILoggingEvent) { |
|
||||
ILoggingEvent evt = (ILoggingEvent) eventObject; |
|
||||
Marker marker = evt.getMarker(); |
|
||||
if (ObjectUtil.isEmpty(marker)) |
|
||||
marker = LogMarkerTypeEnum.getMarker(LogMarkerTypeEnum.DEFAULT); |
|
||||
eventsCollection = db.getCollection(marker.getName()); |
|
||||
|
|
||||
} |
|
||||
|
|
||||
eventsCollection.insertOne(toMongoDocument(eventObject)); |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public void stop() { |
|
||||
if (mongo != null) |
|
||||
mongo.close(); |
|
||||
super.stop(); |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -1,47 +0,0 @@ |
|||||
|
|
||||
package org.nl.modules.log.rest; |
|
||||
|
|
||||
|
|
||||
import io.swagger.annotations.Api; |
|
||||
import io.swagger.annotations.ApiOperation; |
|
||||
import lombok.RequiredArgsConstructor; |
|
||||
import lombok.extern.slf4j.Slf4j; |
|
||||
import org.nl.annotation.Log; |
|
||||
import org.nl.modules.log.service.RootLogService; |
|
||||
import org.springframework.data.domain.Pageable; |
|
||||
import org.springframework.http.HttpStatus; |
|
||||
import org.springframework.http.ResponseEntity; |
|
||||
import org.springframework.web.bind.annotation.*; |
|
||||
|
|
||||
import java.text.ParseException; |
|
||||
import java.util.Map; |
|
||||
|
|
||||
/** |
|
||||
* @author loujf |
|
||||
* @date 2021-04-02 |
|
||||
**/ |
|
||||
@RestController |
|
||||
@RequiredArgsConstructor |
|
||||
@Api(tags = "系统日志") |
|
||||
@RequestMapping("/api/rootLog") |
|
||||
@Slf4j |
|
||||
public class RootLogController { |
|
||||
|
|
||||
private final RootLogService rootLogService; |
|
||||
|
|
||||
@GetMapping |
|
||||
@Log("查询日志") |
|
||||
@ApiOperation("查询日志") |
|
||||
//@PreAuthorize("@el.check('log:list')")
|
|
||||
public ResponseEntity<Object> query(@RequestParam Map whereJson, Pageable page) throws ParseException { |
|
||||
return new ResponseEntity<>(rootLogService.queryAll(whereJson, page), HttpStatus.OK); |
|
||||
} |
|
||||
|
|
||||
@PostMapping( "/error") |
|
||||
@Log("查询异常详情") |
|
||||
@ApiOperation("查询异常详情") |
|
||||
public ResponseEntity<Object> findError(@RequestBody Map whereJson) { |
|
||||
return new ResponseEntity<>(rootLogService.findError(whereJson), HttpStatus.OK); |
|
||||
} |
|
||||
|
|
||||
} |
|
@ -1,29 +0,0 @@ |
|||||
package org.nl.modules.log.service; |
|
||||
|
|
||||
import org.springframework.data.domain.Pageable; |
|
||||
|
|
||||
import java.text.ParseException; |
|
||||
import java.util.Map; |
|
||||
|
|
||||
/** |
|
||||
* 系统日志查询 |
|
||||
*/ |
|
||||
public interface RootLogService { |
|
||||
/** |
|
||||
* 查询数据分页 |
|
||||
* |
|
||||
* @param whereJson 条件 |
|
||||
* @param page 分页参数 |
|
||||
* @return Map<String, Object> |
|
||||
*/ |
|
||||
Object queryAll(Map whereJson, Pageable page) throws ParseException; |
|
||||
|
|
||||
|
|
||||
/** |
|
||||
* 查询异常详情 |
|
||||
* |
|
||||
* @param whereJson |
|
||||
* @return Log |
|
||||
*/ |
|
||||
String findError(Map whereJson); |
|
||||
} |
|
@ -1,76 +0,0 @@ |
|||||
package org.nl.modules.log.service.impl; |
|
||||
|
|
||||
import cn.hutool.core.util.StrUtil; |
|
||||
import com.alibaba.fastjson.JSONObject; |
|
||||
import lombok.RequiredArgsConstructor; |
|
||||
import lombok.extern.slf4j.Slf4j; |
|
||||
import org.nl.acs.log.service.LogServer; |
|
||||
import org.nl.modules.log.service.RootLogService; |
|
||||
import org.springframework.data.domain.Pageable; |
|
||||
import org.springframework.data.domain.Sort; |
|
||||
import org.springframework.data.mongodb.core.MongoTemplate; |
|
||||
import org.springframework.data.mongodb.core.query.Criteria; |
|
||||
import org.springframework.data.mongodb.core.query.Query; |
|
||||
import org.springframework.stereotype.Service; |
|
||||
|
|
||||
import java.util.List; |
|
||||
import java.util.Map; |
|
||||
|
|
||||
/** |
|
||||
* @author loujf |
|
||||
* @description 服务实现 |
|
||||
* @date 2022-04-02 |
|
||||
**/ |
|
||||
@Service |
|
||||
@RequiredArgsConstructor |
|
||||
@Slf4j |
|
||||
public class RootLogServiceImpl implements RootLogService { |
|
||||
|
|
||||
private final MongoTemplate mongoTemplate; |
|
||||
|
|
||||
private final LogServer logServer; |
|
||||
|
|
||||
@Override |
|
||||
public Map<String, Object> queryAll(Map whereJson, Pageable page){ |
|
||||
String log_type = (String) whereJson.get("log_type"); |
|
||||
String log_level = (String) whereJson.get("log_level"); |
|
||||
String begin_time = (String) whereJson.get("begin_time"); |
|
||||
String end_time = (String) whereJson.get("end_time"); |
|
||||
|
|
||||
Query query = new Query().with(Sort.by("date")); |
|
||||
|
|
||||
if (StrUtil.isEmpty(log_type)) { |
|
||||
log_type = "default"; |
|
||||
} |
|
||||
if (StrUtil.isNotEmpty(log_level)){ |
|
||||
query.addCriteria(Criteria.where("level").is(log_level)); |
|
||||
} |
|
||||
if (StrUtil.isNotEmpty(begin_time) && StrUtil.isNotEmpty(end_time)) { |
|
||||
query.addCriteria(Criteria.where("date") |
|
||||
.gte(begin_time) |
|
||||
.lte(end_time)); |
|
||||
} |
|
||||
|
|
||||
//根据条件得到的总条数
|
|
||||
long totalSize = mongoTemplate.count(query, Map.class, log_type); |
|
||||
|
|
||||
//处理分页
|
|
||||
query.skip(page.getPageNumber()).limit(page.getPageSize()); |
|
||||
List<Map> list = mongoTemplate.find(query,Map.class, log_type); |
|
||||
//封装前端分页查询结果
|
|
||||
JSONObject result = new JSONObject(); |
|
||||
result.put("content", list); |
|
||||
result.put("totalElements", totalSize); |
|
||||
return result; |
|
||||
} |
|
||||
|
|
||||
@Override |
|
||||
public String findError(Map map) { |
|
||||
String id = (String) map.get("id"); |
|
||||
String marker = (String) map.get("marker"); |
|
||||
Query query = Query.query(Criteria.where("_id").is(id)).with(Sort.by("date")); |
|
||||
JSONObject list = mongoTemplate.findOne(query,JSONObject.class,marker); |
|
||||
|
|
||||
return list.getString("message"); |
|
||||
} |
|
||||
} |
|
@ -1,17 +1,32 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<included> |
<included> |
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
<appender name="acs_to_erp" class="org.nl.modules.log.MongoDBAppender"> |
<property name="LOG_HOME" value="${logPath}"/> |
||||
<dbName>acs_log</dbName> |
<!-- 按照每天生成日志文件 --> |
||||
<collectionName>acs_to_erp</collectionName> |
<appender name="FILE7" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<source>${CONTEXT_NAME}</source> |
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
<!--日志文件输出的文件名--> |
||||
<level>info</level> |
<FileNamePattern>${LOG_HOME}/ACS请求ERP/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
</filter> |
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
</appender> |
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
<!-- 打印sql --> |
<!-- 打印sql --> |
||||
<logger name="org.nl.acs.ext.erp.service.impl.AcsToErpServiceImpl" level="info" additivity="false"> |
<logger name=" org.nl.acs.ext.erp.service.impl.AcsToErpServiceImpl" level="info" additivity="false"> |
||||
<appender-ref ref="acs_to_erp"/> |
<appender-ref ref="FILE7"/> |
||||
</logger> |
</logger> |
||||
</included> |
</included> |
||||
|
@ -1,17 +1,32 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<included> |
<included> |
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
<appender name="acs_to_wms" class="org.nl.modules.log.MongoDBAppender"> |
<property name="LOG_HOME" value="${logPath}"/> |
||||
<dbName>acs_log</dbName> |
<!-- 按照每天生成日志文件 --> |
||||
<collectionName>acs_to_wms</collectionName> |
<appender name="FILE8" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<source>${CONTEXT_NAME}</source> |
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
<!--日志文件输出的文件名--> |
||||
<level>info</level> |
<FileNamePattern>${LOG_HOME}/ACS请求WMS/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
</filter> |
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
</appender> |
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
<!-- 打印sql --> |
<!-- 打印sql --> |
||||
<logger name="org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl" level="info" additivity="false"> |
<logger name="org.nl.acs.ext.wms.service.impl.AcsToWmsServiceImpl" level="info" additivity="false"> |
||||
<appender-ref ref="acs_to_wms"/> |
<appender-ref ref="FILE8"/> |
||||
</logger> |
</logger> |
||||
</included> |
</included> |
||||
|
@ -1,16 +0,0 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||
<included> |
|
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
|
||||
<appender name="agv_feedback_servlet" class="org.nl.modules.log.MongoDBAppender"> |
|
||||
<dbName>acs_log</dbName> |
|
||||
<collectionName>agv_feedback_servlet</collectionName> |
|
||||
<source>${CONTEXT_NAME}</source> |
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
|
||||
<level>info</level> |
|
||||
</filter> |
|
||||
</appender> |
|
||||
<!-- 打印sql --> |
|
||||
<logger name="org.nl.acs.agv.server.impl.AgvServiceImpl" level="info" additivity="false"> |
|
||||
<appender-ref ref="agv_feedback_servlet"/> |
|
||||
</logger> |
|
||||
</included> |
|
@ -1,18 +0,0 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
|
||||
<included> |
|
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
|
||||
<appender name="agv_leave_servlet" class="org.nl.modules.log.MongoDBAppender"> |
|
||||
<dbName>acs_log</dbName> |
|
||||
<collectionName>agv_leave_servlet</collectionName> |
|
||||
<source>${CONTEXT_NAME}</source> |
|
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
|
||||
<level>info</level> |
|
||||
</filter> |
|
||||
</appender> |
|
||||
|
|
||||
<!-- 打印sql --> |
|
||||
<logger name="org.nl.acs.device_driver.electric_fence.ItemProtocol" level="info" additivity="false"> |
|
||||
<appender-ref ref="agv_leave_servlet"/> |
|
||||
</logger> |
|
||||
|
|
||||
</included> |
|
@ -0,0 +1,32 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<included> |
||||
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
|
<property name="LOG_HOME" value="${logPath}"/> |
||||
|
<!-- 按照每天生成日志文件 --> |
||||
|
<appender name="FILE5" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
|
<!--日志文件输出的文件名--> |
||||
|
<FileNamePattern>${LOG_HOME}/反馈AGV请求/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
|
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
|
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
|
<!-- 打印sql --> |
||||
|
<logger name="org.nl.acs.agv.server.impl.AgvServiceImpl" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE5"/> |
||||
|
</logger> |
||||
|
</included> |
@ -0,0 +1,32 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<included> |
||||
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
|
<property name="LOG_HOME" value="${logPath}"/> |
||||
|
<!-- 按照每天生成日志文件 --> |
||||
|
<appender name="FILE6" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
|
<!--日志文件输出的文件名--> |
||||
|
<FileNamePattern>${LOG_HOME}/AGV请求离开/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
|
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
|
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
|
<!-- 打印sql --> |
||||
|
<logger name="org.nl.acs.device_driver.magic_agv.AgvackServlet" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE6"/> |
||||
|
</logger> |
||||
|
</included> |
@ -1,16 +1,31 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<included> |
<included> |
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
<appender name="auto_create_inst" class="org.nl.modules.log.MongoDBAppender"> |
<property name="LOG_HOME" value="${logPath}"/> |
||||
<dbName>acs_log</dbName> |
<!-- 按照每天生成日志文件 --> |
||||
<collectionName>auto_create_inst</collectionName> |
<appender name="FILE3" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<source>${CONTEXT_NAME}</source> |
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
<!--日志文件输出的文件名--> |
||||
<level>info</level> |
<FileNamePattern>${LOG_HOME}/自动创建指令/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
</filter> |
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
</appender> |
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
<!-- 打印sql --> |
<!-- 打印sql --> |
||||
<logger name="org.nl.modules.quartz.task1.AutoCreateInst" level="info" additivity="false"> |
<logger name="org.nl.modules.quartz.task.AutoCreateInst" level="info" additivity="false"> |
||||
<appender-ref ref="auto_create_inst"/> |
<appender-ref ref="FILE3"/> |
||||
</logger> |
</logger> |
||||
</included> |
</included> |
||||
|
@ -1,17 +1,32 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<included> |
<included> |
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
<appender name="ndc_socket_connection_autorun" class="org.nl.modules.log.MongoDBAppender"> |
<property name="LOG_HOME" value="${logPath}"/> |
||||
<dbName>acs_log</dbName> |
<!-- 按照每天生成日志文件 --> |
||||
<collectionName>ndc_socket_connection_autorun</collectionName> |
<appender name="FILE10" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<source>${CONTEXT_NAME}</source> |
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
<!--日志文件输出的文件名--> |
||||
<level>info</level> |
<FileNamePattern>${LOG_HOME}/NDC/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
</filter> |
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
</appender> |
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
<!-- 打印sql --> |
<!-- 打印sql --> |
||||
<logger name="org.nl.start.auto.run.NDCSocketConnectionAutoRun" level="info" additivity="false"> |
<logger name="org.nl.start.auto.run.NDCSocketConnectionAutoRun" level="info" additivity="false"> |
||||
<appender-ref ref="ndc_socket_connection_autorun"/> |
<appender-ref ref="FILE10"/> |
||||
</logger> |
</logger> |
||||
</included> |
</included> |
||||
|
@ -1,15 +1,32 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<included> |
<included> |
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
<appender name="agv_task_status" class="org.nl.modules.log.MongoDBAppender"> |
<property name="LOG_HOME" value="${logPath}"/> |
||||
<dbName>acs_log</dbName> |
<!-- 按照每天生成日志文件 --> |
||||
<collectionName>agv_task_status</collectionName> |
<appender name="FILE4" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<source>${CONTEXT_NAME}</source> |
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
<!--日志文件输出的文件名--> |
||||
<level>info</level> |
<FileNamePattern>${LOG_HOME}/查询AGV指令状态/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
</filter> |
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
</appender> |
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
|
<!-- 打印sql --> |
||||
<logger name="org.nl.modules.quartz.task.QueryMagicAgvTaskStatus" level="info" additivity="false"> |
<logger name="org.nl.modules.quartz.task.QueryMagicAgvTaskStatus" level="info" additivity="false"> |
||||
<appender-ref ref="agv_task_status"/> |
<appender-ref ref="FILE4"/> |
||||
</logger> |
</logger> |
||||
</included> |
</included> |
||||
|
@ -1,15 +1,32 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<included> |
<included> |
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
<appender name="xz_agv_task_status" class="org.nl.modules.log.MongoDBAppender"> |
<property name="LOG_HOME" value="${logPath}"/> |
||||
<dbName>acs_log</dbName> |
<!-- 按照每天生成日志文件 --> |
||||
<collectionName>xz_agv_task_status</collectionName> |
<appender name="FILE10" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<source>${CONTEXT_NAME}</source> |
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
<!--日志文件输出的文件名--> |
||||
<level>info</level> |
<FileNamePattern>${LOG_HOME}/查询仙知AGV指令状态/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
</filter> |
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
</appender> |
</appender> |
||||
<logger name="org.nl.modules.quartz.task1.QueryXZAgvTaskStatus" level="info" additivity="false"> |
|
||||
<appender-ref ref="xz_agv_task_status"/> |
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
|
<!-- 打印sql --> |
||||
|
<logger name="org.nl.modules.quartz.task.QueryXZAgvTaskStatus" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE10"/> |
||||
</logger> |
</logger> |
||||
</included> |
</included> |
||||
|
@ -0,0 +1,32 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<included> |
||||
|
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
|
<property name="LOG_HOME" value="${logPath}"/> |
||||
|
<!-- 按照每天生成日志文件 --> |
||||
|
<appender name="FILE11" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
|
<!--日志文件输出的文件名--> |
||||
|
<FileNamePattern>${LOG_HOME}/扫码记录/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
|
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
|
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
|
<!-- 打印sql --> |
||||
|
<logger name="org.nl.acs.device_driver.standard_scanner.StandardScannerDeviceDriver" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE11"/> |
||||
|
</logger> |
||||
|
</included> |
@ -1,19 +1,32 @@ |
|||||
<?xml version="1.0" encoding="UTF-8"?> |
<?xml version="1.0" encoding="UTF-8"?> |
||||
<included> |
<included> |
||||
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
<springProperty scope="context" name="logPath" source="logging.file.path" defaultValue="logs"/> |
||||
<appender name="wms_to_acs" class="org.nl.modules.log.MongoDBAppender"> |
<property name="LOG_HOME" value="${logPath}"/> |
||||
<dbName>acs_log</dbName> |
<!-- 按照每天生成日志文件 --> |
||||
<collectionName>wms_to_acs</collectionName> |
<appender name="FILE9" class="ch.qos.logback.core.rolling.RollingFileAppender"> |
||||
<source>${CONTEXT_NAME}</source> |
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> |
||||
<filter class="ch.qos.logback.classic.filter.ThresholdFilter"> |
<!--日志文件输出的文件名--> |
||||
<level>info</level> |
<FileNamePattern>${LOG_HOME}/WMS下发ACS/%d{yyyy-MM-dd}.%i.log</FileNamePattern> |
||||
</filter> |
<!--日志文件保留天数--> |
||||
|
<maxHistory>15</maxHistory> |
||||
|
<!--单个日志最大容量 至少10MB才能看得出来--> |
||||
|
<maxFileSize>200MB</maxFileSize> |
||||
|
<!--所有日志最多占多大容量--> |
||||
|
<totalSizeCap>20GB</totalSizeCap> |
||||
|
</rollingPolicy> |
||||
|
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder"> |
||||
|
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符--> |
||||
|
<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern> |
||||
|
</encoder> |
||||
|
|
||||
</appender> |
</appender> |
||||
|
|
||||
|
<!-- <logger name="org.nl.start.Init" level="info" additivity="false"> |
||||
|
<appender-ref ref="FILE3"/> |
||||
|
</logger>--> |
||||
|
|
||||
<!-- 打印sql --> |
<!-- 打印sql --> |
||||
<logger name="org.nl.acs.ext.wms.service.impl.WmsToAcsServiceImpl" level="info" additivity="false"> |
<logger name="org.nl.acs.ext.wms.service.impl.WmsToAcsServiceImpl" level="info" additivity="false"> |
||||
<appender-ref ref="wms_to_acs"/> |
<appender-ref ref="FILE9"/> |
||||
</logger> |
</logger> |
||||
<!--<logger name="org.nl.acs.device_driver.electric_fence.ItemProtocol" level="info" additivity="false"> |
|
||||
<appender-ref ref="wms_to_acs"/> |
|
||||
</logger>--> |
|
||||
</included> |
</included> |
||||
|
Loading…
Reference in new issue