| | |
| | | package com.vci.ubcs.log.service.impl; |
| | | |
| | | import com.vci.ubcs.log.dto.LocalLogVO; |
| | | import com.vci.ubcs.log.enumpack.ServiceNameRoleEnum; |
| | | import com.vci.ubcs.log.vo.LocalLogVO; |
| | | import com.vci.ubcs.log.service.ILogLocalService; |
| | | import com.vci.ubcs.log.entity.LocalLog; |
| | | import com.vci.ubcs.resource.utils.FileUtil; |
| | | import com.vci.ubcs.resource.utils.ZipUtil; |
| | | import com.vci.ubcs.resource.vo.FileObjectVO; |
| | | import com.vci.ubcs.starter.exception.VciBaseException; |
| | | import com.vci.ubcs.starter.web.util.BeanUtil; |
| | | import com.vci.ubcs.starter.web.util.VciBaseUtil; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.apache.commons.io.IOUtils; |
| | | import org.springblade.core.log.exception.ServiceException; |
| | |
| | | import com.vci.ubcs.resource.bo.FileObjectBO; |
| | | import org.springblade.core.tool.api.R; |
| | | import org.springblade.core.tool.utils.Func; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.beans.factory.annotation.Value; |
| | | import org.springframework.context.annotation.Configuration; |
| | | import org.springframework.context.EnvironmentAware; |
| | | import org.springframework.core.env.Environment; |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.util.StringUtils; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.io.*; |
| | | import java.net.MalformedURLException; |
| | | import java.net.URL; |
| | | import java.nio.file.FileSystems; |
| | | import java.nio.file.Files; |
| | | import java.nio.file.Path; |
| | |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class LogLocalServiceImpl implements ILogLocalService{ |
| | | public class LogLocalServiceImpl implements ILogLocalService, EnvironmentAware { |
| | | |
| | | /** |
| | | * 各个服务存放的的父路径 |
| | |
| | | */ |
| | | private Boolean isWindows = true; |
| | | |
| | | { |
| | | String os = System.getProperty("os.name").toLowerCase(); |
| | | //默认就配置为windows的,如果不是当前系统不是windows就需要对其转换为linux的文件路径格式 |
| | | /** |
| | | * 根据当前运行的环境,对配置的日志路径格式进行调整 |
| | | * @param environment |
| | | */ |
| | | @Override |
| | | public void setEnvironment(Environment environment) { |
| | | String os = environment.getProperty("os.name").toLowerCase(); |
| | | if (!os.contains("win")) { |
| | | this.PARENTPATH = this.PARENTPATH.substring(this.PARENTPATH.lastIndexOf(":") + 1).replace("\\", "/"); |
| | | this.LOGPATH = this.LOGPATH.replace("\\", "/"); |
| | |
| | | * @return |
| | | */ |
| | | //@Override |
| | | public List<LocalLog> getSystemLogList(String logParentPath) { |
| | | List<LocalLog> localLogs = new ArrayList<>(); |
| | | public List<LocalLogVO> getSystemLogList(String logParentPath) { |
| | | List<LocalLogVO> localLogsVO = new ArrayList<>(); |
| | | // 不为空说明是加载当前这个服务路径下的日志文件 |
| | | if(Func.isNotEmpty(logParentPath)){ |
| | | File file = new File(logParentPath); |
| | |
| | | File[] files = file.listFiles(); |
| | | Arrays.stream(files).forEach(item->{ |
| | | // 组建日志文件对象 |
| | | LocalLog localLog = new LocalLog(); |
| | | LocalLogVO localLog = new LocalLogVO(); |
| | | localLog.setLogName(item.getName()); |
| | | localLog.setLogType(getLogType(item.getName())); |
| | | localLog.setCreateTime(getLastModifiedOrCreatTime(false,logParentPath)); |
| | |
| | | localLog.setServiceId(serviceId); |
| | | localLog.setServiceName(getServiceName(serviceId)); |
| | | localLog.setHasChildren(false); |
| | | localLogs.add(localLog); |
| | | localLogsVO.add(localLog); |
| | | }); |
| | | } |
| | | }else { |
| | |
| | | if(dir.getName().contains("ubcs_")){ |
| | | String fullPath = dir.getPath() + LOGPATH; |
| | | File file = new File(fullPath); |
| | | LocalLog localLog = new LocalLog(); |
| | | localLog.setLastModifier(getLastModifiedOrCreatTime(true,fullPath)); |
| | | localLog.setCreateTime(getLastModifiedOrCreatTime(false,fullPath)); |
| | | localLog.setLogPath(fullPath); |
| | | String serviceId = getServiceId(file.getPath()); |
| | | localLog.setServiceId(serviceId); |
| | | String serviceName = getServiceName(serviceId); |
| | | localLog.setServiceName(serviceName); |
| | | localLog.setLogType(serviceName+"日志父目录"); |
| | | localLog.setLogName(serviceName+"日志父目录"); |
| | | localLog.setHasChildren(true); |
| | | localLogs.add(localLog); |
| | | if(file.exists()){ |
| | | LocalLogVO localLogVO = new LocalLogVO(); |
| | | localLogVO.setLastModifier(getLastModifiedOrCreatTime(true,fullPath)); |
| | | localLogVO.setCreateTime(getLastModifiedOrCreatTime(false,fullPath)); |
| | | localLogVO.setLogPath(fullPath); |
| | | String serviceId = getServiceId(file.getPath()); |
| | | localLogVO.setServiceId(serviceId); |
| | | String serviceName = getServiceName(serviceId); |
| | | localLogVO.setServiceName(serviceName); |
| | | localLogVO.setLogType(serviceName+"日志父目录"); |
| | | localLogVO.setLogName(serviceName+"日志父目录"); |
| | | localLogVO.setHasChildren(true); |
| | | localLogsVO.add(localLogVO); |
| | | } |
| | | } |
| | | }); |
| | | } |
| | | return localLogs; |
| | | return localLogsVO; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return |
| | | */ |
| | | private String getServiceName(String serViceId){ |
| | | return EnumCache.getValue(EnumEnum.SERCIVE_NAME_ROLE, serViceId); |
| | | // EnumCache.getValue(EnumEnum.SERCIVE_NAME_ROLE, serViceId) |
| | | return ServiceNameRoleEnum.getTextByValue(serViceId); |
| | | } |
| | | |
| | | /** |
| | |
| | | throw new ServerException("未获取到该日志路径!"); |
| | | } |
| | | FileObjectBO fileObjectBO = new FileObjectBO(); |
| | | String logFullPaths = localLogVO.getLogFullPaths(); |
| | | String logFullPaths = this.convertWindows2Linux(localLogVO.getLogFullPaths()); |
| | | // 判断是否是父目录 |
| | | if(!localLogVO.getHasChildren()){ |
| | | //只下载一个日志文件 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 下载之前将windows的路径格式转换为linux |
| | | * @param fullPath |
| | | * @return |
| | | */ |
| | | private String convertWindows2Linux(String fullPath){ |
| | | String os = System.getProperty("os.name").toLowerCase(); |
| | | if (!os.contains("win")) { |
| | | fullPath = fullPath.replace("\\", "/"); |
| | | } |
| | | return fullPath; |
| | | } |
| | | |
| | | /** |
| | | * 删除日志文件 |
| | | * @param localLogVO 文件全路径集合 |
| | | * @throws ServerException |