У меня есть требование, когда необходимо записать любое действие (обновление, изменение или вставка), выполненное пользователем, и войти в базу данных. Использование log4j и запись журналов на сервер, но необходимо вставить таблицу журналов. Есть ли способ захвата или любое альтернативное решение для записи журналов в базу данных.
Я написал служебный метод для захвата журналов, но я чувствую, что его довольно неэффективный способ обработки.
public class Logging {
public static void captureLogs(Logs logs, String action, String userID, Date createdDate) {
logs.setUserId(userID);
logs.setAction(action);
logs.setCreatedDate(createdDate);
}
}
public class Logs {
private String action;
private String userId;
private Date createdDate;
// getters and setters
}
@Service
public TaskServiceImpl implements TaskService {
private static final Logger LOGGER = LoggerFactory.getLogger(TaskServiceImpl .class);
@Autowired
private Logsrepository logsrepository;
@Autowired
private UserRepository userRepository;
public String updateUserDetails(String userId,UserDto dto){
Logs logs=new Logs();
Task task=userRepository.findOne(userId);
task.setTaskId(dto.getTaskId);
task.setTaskCompletedDate(dto.getTaskCompletedDate);
String action="User updated taskID"+dto.getTaskId+" and
taskCompletedDate"+dto.getTaskCompletedDate;
LOGGER.info("message : "+ action);
Logging.logs(logs,action,userId,new Date());
userRepository.flush();
logsrepository.save(logs);
}
}
Может ли он быть обработан лучше?