Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add support for lttng-ust log4j2 #25

Open
wants to merge 2 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions vlttng/profiles/lttng-ust-log4j2-agent.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
projects:
lttng-ust:
configure: '--enable-java-agent-log4j2'
34 changes: 32 additions & 2 deletions vlttng/venv.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,10 @@ def tar_x(self, path, output_name):
_sq(output_name))
self.run(cmd)

def unzip(self, path, output_name):
cmd = 'unzip -d {} {}'.format(_sq(output_name), _sq(path))
self.run(cmd)

def rm_rf(self, path):
# some basic protection
no_rm_dirs = (
Expand Down Expand Up @@ -288,6 +292,11 @@ def share_java(self):
def log4j_jar(self):
return os.path.join(self.share_java, 'log4j.jar')

@property
def log4j2_jars(self):
jars = ['log4j-api.jar', 'log4j-core.jar', 'log4j-1.2-api.jar']
return [os.path.join(self.share_java, 'log4j2', f) for f in jars]

def project_src(self, name):
return os.path.join(self.src, name)

Expand All @@ -309,6 +318,7 @@ def project(self):

class VEnvCreator:
_LOG4J_NAME = 'log4j-1.2.17'
_LOG4J2_NAME = 'log4j2-2.22.1'

def __init__(self, path, profile, force, verbose, jobs, hide_export):
self._paths = _Paths(os.path.abspath(path))
Expand Down Expand Up @@ -440,7 +450,7 @@ def _create_project_instructions_lttng_tools(self, project):
def _create_project_instructions_lttng_ust(self, project):
instructions = self._create_project_instructions_generic_autotools(project)
instructions.add_env = {
'CLASSPATH': self._paths.log4j_jar,
'CLASSPATH': ":".join([self._paths.log4j_jar] + self._paths.log4j2_jars),
}

return instructions
Expand Down Expand Up @@ -719,7 +729,7 @@ def _build_lttng_ust(self):
log4j_jar = '{}.jar'.format(log4j_name)
_pinfo('Download Apache log4j')
self._runner.cd(self._paths.src)
self._runner.wget('http://apache.mirror.gtcomm.net/logging/log4j/1.2.17/{}'.format(log4j_tarball),
self._runner.wget('https://dlcdn.apache.org/logging/log4j/1.2.17/{}'.format(log4j_tarball),
log4j_tarball)

# extract
Expand All @@ -730,6 +740,26 @@ def _build_lttng_ust(self):
self._runner.cp_rv(os.path.join(log4j_name, log4j_jar),
self._paths.log4j_jar)

if '--enable-java-agent-all' in project.configure or '--enable-java-agent-log4j2' in project.configure:
log4j2_version = '2.22.1'
log4j2_name = 'log4j-{}'.format(log4j2_version)
log4j2_zipfile = 'apache-{}-bin.zip'.format(log4j2_name)
_pinfo('Download Apache Log4j 2')
self._runner.cd(self._paths.src)
self._runner.wget('https://archive.apache.org/dist/logging/log4j/{}/{}'.format(log4j2_version,
log4j2_zipfile),
log4j2_zipfile)

# extract
self._runner.mkdir_p(log4j2_name)
self._runner.unzip(log4j2_zipfile, log4j2_name)

# install
self._runner.mkdir_p(os.path.dirname(self._paths.log4j2_jars[0]))
for dest_jar in self._paths.log4j2_jars:
src_jar = os.path.basename(dest_jar).replace('.jar', '-{}.jar'.format(log4j2_version))
self._runner.cp_rv(os.path.join(log4j2_name, src_jar), dest_jar)

self._build_project('lttng-ust')

def _get_build_env_from_instructions(self, instructions):
Expand Down
26 changes: 21 additions & 5 deletions vlttng/vlttng_quick_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,11 @@ class _WizardState(enum.Enum):
ASK_LTTNG_TOOLS_PYTHON = 7
ASK_LTTNG_UST_JUL_AGENT = 8
ASK_LTTNG_UST_LOG4J_AGENT = 9
ASK_LTTNG_UST_PYTHON_AGENT = 10
ASK_PYTHON_INTERPRETER = 11
ASK_PATH = 12
END = 13
ASK_LTTNG_UST_LOG4J2_AGENT = 10
ASK_LTTNG_UST_PYTHON_AGENT = 11
ASK_PYTHON_INTERPRETER = 12
ASK_PATH = 13
END = 14


class _Wizard:
Expand All @@ -107,6 +108,7 @@ def __init__(self):
_WizardState.ASK_LTTNG_TOOLS_PYTHON: self._state_ask_lttng_tools_python,
_WizardState.ASK_LTTNG_UST_JUL_AGENT: self._state_ask_lttng_ust_jul_agent,
_WizardState.ASK_LTTNG_UST_LOG4J_AGENT: self._state_ask_lttng_ust_log4j_agent,
_WizardState.ASK_LTTNG_UST_LOG4J2_AGENT: self._state_ask_lttng_ust_log4j2_agent,
_WizardState.ASK_LTTNG_UST_PYTHON_AGENT: self._state_ask_lttng_ust_python_agent,
_WizardState.ASK_PYTHON_INTERPRETER: self._state_ask_python_interpreter,
_WizardState.ASK_PATH: self._state_ask_path,
Expand Down Expand Up @@ -410,7 +412,7 @@ def _state_ask_lttng_ust_jul_agent(self):

def _state_ask_lttng_ust_log4j_agent(self):
if 'lttng-ust' not in self._projects:
self._state = _WizardState.ASK_LTTNG_UST_PYTHON_AGENT
self._state = _WizardState.ASK_LTTNG_UST_LOG4J2_AGENT
return

print(_cquestion('Would you like to build the LTTng-UST log4j agent?'))
Expand All @@ -419,6 +421,20 @@ def _state_ask_lttng_ust_log4j_agent(self):
if self._get_yes_no(False):
self._profiles.append('lttng-ust-log4j-agent')

print()
self._state = _WizardState.ASK_LTTNG_UST_LOG4J2_AGENT

def _state_ask_lttng_ust_log4j2_agent(self):
if 'lttng-ust' not in self._projects:
self._state = _WizardState.ASK_LTTNG_UST_PYTHON_AGENT
return

print(_cquestion('Would you like to build the LTTng-UST Log4j 2 agent?'))
print()

if self._get_yes_no(False):
self._profiles.append('lttng-ust-log4j2-agent')

print()
self._state = _WizardState.ASK_LTTNG_UST_PYTHON_AGENT

Expand Down