728x90

  습관(루틴)을 만들기 위해 계획은 세웠지만 막상 실행할 때, 사람은 여러가지 심리적 요인으로 해야 할 일을 시작하지 못하거나, 하기 싫다는 생각에 미루게 됩니다.

  이를 극복하기 위해 개인적으로 시도해 본 방법 중 괜찮았던 방법이 있어 소개합니다.

 

  생각을 비우는 명상법을 응용한 방법인데, '생각하지 않고 행동하기'입니다.

  1. 어떤 해야 할 일 하나를 정한 후, 내 몸이 그 명령어가 입력된 기계라고 생각합니다.(로봇을 연상하면 쉽습니다.)
  2. 그리고 그 기계에 스위치를 넣는다고 생각합니다.
  3. 제 3자가 되어 기계가 된 내 몸이 움직이는 것을 쳐다본다고 생각합니다.

  신기하게도 이런 단순한 방법으로도 하기 싫다는 마음(귀찮음)이 쉽게 해결됩니다. 내가 아닌 내 몸이 혼자서 움직인다는 감각으로 바꿨을 뿐인데 말이죠.

  이 방법은 어느 정도 정형화된 일을 할 때 효과적입니다.

  예를 들어 제가 이 방법을 사용하는 경우입니다.

  • 1시간마다 체조를 한다.
  • 밥을 먹고 난 뒤에는 바로 설겆이를 한다.

  해야 할 일이 변화가 거의 없고, 복잡한 사고가 필요하지는 않지만, 귀찮다는 생각이 들어서 안 하게 되는 일에 좋죠.

  새로운 생활습관을 루틴화하기 어려운데, 이 방법을 쓰면 뇌의 저항의식을 약화시키는 것인지 좀 더 수월해집니다.

 

  단점은, 아무래도 새로운 것을 창조하는 일에는 사용하기 어렵다는 것입니다. 이 방법의 핵심은 명상처럼 생각을 비우는 것인데, 생각을 안 할 수가 없으니 말이죠.



반응형

'' 카테고리의 다른 글

상속  (0) 2024.02.01
운전면허증 갱신 끝났다~~~!  (1) 2022.10.11
7천억 해먹고, 8천억 더.. 서민 등치는 '빌라왕국'  (0) 2022.09.04
시스템1의 지배  (0) 2022.05.01
728x90

개요

  log4j2를 사용하면서 특정 로그만 특정 파일로 분리하고 싶었습니다. 기본적으로는 패키지 단위로 설정 가능하지만, 동일 패키지 내에서도 기본 로그와 특정 로그로 분리해서 동작하게 하고 싶었습니다.

  기존에 한 번 해본 경험이 있는 작업이었는데, 어렵지 않아서 별도로 기록하지는 않았었습니다. 그런데, 오랜만에 다시 쓸 일이 있어서 했더니 생각지 못한 부분에서 시간이 허비해버렸습니다. 다시 시간낭비 하지 않도록 기재합니다.

예제코드

</ExampleProject/src/main/resources/log4j2.xml>

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitoringInterval="30" shutdownHook="disable">
    <Properties>
        <Property name="basic_format">[%d{yyyy-MM-dd HH:mm:ss}][%5p][%c %L] %m%n</Property>
        <Property name="basic_dir">/DEV/PRJ/webapp/example/logs/</Property> 
    </Properties>
    <Appenders>
        <Console name="console" target="SYSTEM_OUT">
            <PatternLayout pattern="${basic_format}" />
        </Console>


		<!-- <분리로그어펜더> -->
		<RollingFile name="TmpLogFileAppender" append="true" 
			ignoreExceptions="false"
		>
            <FileName>${basic_dir}/example-tmp.log</FileName>
            <FilePattern>${basic_dir}/backup_logs/example-tmp-%d{yyyyMMdd}.log.zip</FilePattern>
			<PatternLayout pattern="${basic_format}" />
			<Policies>
				<TimeBasedTriggeringPolicy interval="1"
					modulate="true" />
			</Policies>
		</RollingFile>
		<!-- </분리로그어펜더> -->
    </Appenders>


    <Loggers>
		<!-- <분리로그> -->
		<Logger name="TmpLog-com.cafe24.twilightsh.standardexample.log.ExampleLogController" level="INFO" additivity="false"><AppenderRef ref="TmpLogFileAppender" /></Logger>
		<!-- </분리로그> -->
        <Root level="INFO">
            <AppenderRef ref="console" />
        </Root>
    </Loggers>
</Configuration>

 

<ExampleLogController.java>

@Controller
public class ExampleLogController {
	/**
	 * 로그설정.
	 */
	protected Log log = LogFactory.getLog(this.getClass());
	/**
	 * 임시로그설정.
	 */
	protected Log tmpLog = LogFactory.getLog("TmpLog-"+this.getClass().getName());
	
	…생략…


	@RequestMapping(value = "/example/log/writeExampleLog.do")	
	public ModelAndView writeExampleLog(final HttpServletRequest request, final ModelMap model) {
		final String pattern = "yyMMddHHmmss";
		final String logKeyForm = "[LogKey:" + DateFormatUtils.format(new Date(), pattern) + Integer.toHexString(new Random().nextInt(255)) + "]";
		try {
			// <분리로그>임시로그
			if (tmpLog.isInfoEnabled()) {
				tmpLog.info(logKeyForm + "로그남기기");
			}
			// </분리로그>


			final JSONObject responseBody = new JSONObject();
			responseBody.put("resultCd", "SUCCESS");
			return responseBody.toString();
		} catch (final Throwable t) {
			final String commonMsg = "예제API로그 생성 실패.";
			throw new RuntimeException(
					logKeyForm + commonMsg
					, t);
		}
	}
}

 

해설

어펜더를 사용하여 로그 분리

  기본 로그파일 외에 별도의 로그파일을 생성하기 위해 Java 파일 내에서 Log를 2개 선언했습니다.

  1. Log log = LogFactory.getLog(this.getClass());
  2. Log tmpLog = LogFactory.getLog("TmpLog-"+this.getClass().getName());

 

  log는 일반적으로 선언하는 평범한 방식으로 선언했지만, tmpLog는 접두어"TmpLog-"를 붙여주었습니다. 이 분리된 tmp로그객체를 위해 xml 파일 내에서는 의 name 속성을 선언할 때 접두어"TmpLog-"를 붙여주었습니다.

<Logger name="TmpLog-com.cafe24.twilightsh.standardexample.log.ExampleLogController" level="INFO" additivity="false"><AppenderRef ref="TmpLogFileAppender" /></Logger>

  name="TmpLog-com.cafe24.twilightsh.standardexample.log.ExampleLogController"에서 접두어"TmpLog-"를 붙여서 로그 남길 클래스명을 기재했습니다.

  ‘ <AppenderRef ref="TmpLogFileAppender" /> ’로 설정했으므로 ‘ <Appenders> ’에서 ‘name="TmpLogFileAppender"’인 어펜더를 사용합니다.

분리된 로그파일 설정

  이 분리된 로그파일 어펜더(‘name="TmpLogFileAppender"’)를 이용해 일별로 로그파일을 남기고자 했습니다.

		<RollingFile name="TmpLogFileAppender" append="true" 
			ignoreExceptions="false"
		>
            <FileName>${basic_dir}/example-tmp.log</FileName>
            <FilePattern>${basic_dir}/backup_logs/example-tmp-%d{yyyyMMdd}.log.zip</FilePattern>
			<PatternLayout pattern="${basic_format}" />
			<Policies>
				<TimeBasedTriggeringPolicy interval="1"
					modulate="true" />
			</Policies>
		</RollingFile>

 

  이를 위해 다음 3가지 설정을 했습니다.

  1. 어펜더 종류는 ‘RollingFile’
  2. <TimeBasedTriggeringPolicy interval="1" modulate="true" /> ’ 정책
  3. 로그파일 패턴을 일별설정인 ‘%d{yyyyMMdd}’. 이는 하루가 바뀔 때마다 날짜로 백업파일이 생성됨을 의미합니다.(‘/example-tmp.log’는 오늘(현재) 파일 이름)

주의점

  name="TmpLog-com.cafe24.twilightsh.standardexample.log.ExampleLogController"에서 접두어"TmpLog-"를 제외한 나머지 부분은 정확한 팩키지 또는 클래스명이어야 합니다. 정확한 이름이 아니면 로그가 기록되지 않습니다.

참고자료

  • 일별 로그 설정방법은 Copilot에 ‘log4j2 일별 로그’로 조회하여 나온 방법을 사용했습니다.
반응형
728x90

  요즘 수면시간이 5시간도 안 될 정도로 수면부족이었는데, 오늘 간만에 6시간 조금 넘게 잤더니 바로 차이를 느꼈다.

 

  똑같은 시간에 일어나서 아침 출근 준비를 하는데, 평소보다 시간이 여유로웠다.

  뭐랄까? 시간이 천천히 가는 느낌?

  평소에 10분 이상 걸리는 행동이, 끝나고 시간을 보면 7분 정도 지나 있다. 3분 정도 빨리 움직이고 있다고 할 수 있다.

 

  예전에 수면 관련 책을 읽었을 때, 이런 내용이 있었다. 하루 8시간을 자야 하는 사람이 7시간만 자면, 일주일 후에는 24시간을 못 잔 것과 비슷한 인지상태가 된다는 것이었다.

  나는 7시간은 커녕 5시간 정도 수면이었으니 내 인지상태가 말도 안 되게 망가져 있었을 것이다. 그러니 나는 못 느끼지만 굉장히 느릿느릿 움직이고 있었을 듯.

 

  앞으로도 8시간 수면을 목표를 지킬 수 있게 노력해야겠다.

반응형

+ Recent posts