Logs your SOC can use every day: a quick reference guide

By Andrew Bentle

Published: March 21, 2024  •  7 minute read  •  Last updated: September 14, 2026



Logs your SOC can use every day: a quick reference guide

Here’s your copy of a helpful log guide to make life easier for analysts.

As you can imagine, the Expel security operations center (SOC) uses a lot of logs. So we pulled them all together into a handy quick reference guide for our analysts. Then we decided it might be nice if we shared the list with our readers.

Enjoy.

What SOC logs are and where to start

A log is a timestamped record of something a system did—a request served, a user authenticated, a scheduled job run, a file written. On its own, a single line is inert. In an investigation it’s evidence: the record that puts an action at a time, on a host, under an account.

Security teams lean on logs for two jobs that pull in different directions. Detection needs a narrow, high-signal subset arriving fast enough to alert on. Investigation needs breadth and history—the log you didn’t think mattered until you’re reconstructing how someone got in. Most log strategies fail by optimizing for one and forgetting the other.

Which log sources to prioritize

If you’re starting from nothing, work in this order:

  1. Identity and authentication. Who logged in, from where, and whether it worked. Windows Security event log, Linux auth logs, and your identity provider. Most intrusions touch these first.
  2. Endpoint. Process execution, and the shell history covered below. This is where you see what an attacker actually did.
  3. Cloud control plane. API calls against your cloud accounts—who created, changed, or deleted infrastructure.
  4. Web access. The first thing you reach for when a public-facing server is compromised.
  5. Everything else. Useful in an investigation, rarely worth alerting on.

Work backward from the detections you want rather than forward from what’s easy to collect. A SIEM full of the logs that were simplest to onboard tells you about the wrong parts of your environment.

Retention and ingestion basics

Two costs govern every logging decision. Ingestion is what you pay to get data into your SIEM, usually priced by volume—which means your bill scales with how much you log, not how much you detect. Retention is what you pay to keep it, and it’s governed as much by compliance as by security: PCI DSS requires 12 months of audit log history with three months immediately available, and other frameworks set their own floors.

That tension is why teams increasingly split the difference—high-signal sources into the SIEM where detections run, high-volume low-signal sources into a security data lake where storage is cheaper and the data stays queryable for investigations. Before adding sources, it’s worth knowing whether the problem is coverage or tuning; optimizing an existing SIEM is often cheaper than feeding it more.

One practical note for everything below: default paths are defaults, not guarantees. Every section includes where to find the config file when logs aren’t where they should be.

Web access logs

Access logs record the http web requests sent to a web server. They’re the first logs we reach for in the event of a web server compromise. These logs show critical investigate information, like the URI string of requests, the status code of the request (200, 404, 500, etc.), and the requester’s source IP.

Log source OS/distro Default path

Apache

Debian /var/log/apache/access.log

Apache

Debian /var/log/apache2/access.log

Apache

Red Hat /var/log/httpd/access_log

Apache

Windows %SystemDrive%\Program Files\Apache Software Foundation\Apache<version-number>\logs\access.log

Apache

Mac /etc/httpd/log/access_log

Apache

FreeBSD /var/log/httpd-access.log
ISS Windows %SystemDrive%\inetpub\logs\LogFiles
Tomcat Debian /opt/tomcat/log/localhost_access_log.YYYY-MM-DD.txt
Tomcat Debian /var/log/tomcat/localhost_access_log.YYYY-MM-DD.txt
Tomcat Windows %SystemDrive%\program files\apache software foundation\apache-tomcat<version-number>\logs\localhost_access_log
Tomcat Mac $TOMCAT_HOME/logs/localhost_access_log.YYYY-MM-DD.txt
JBoss All platforms <JBOSS-install_location>/standalone/log/<custom-name>.log
JBoss All platforms <JBOSS-install_location>/domain/log/<custom-name>.log
JBoss Windows <JBOSS-install_location>\server\default\log\<custom-name>.log
Confluence Linux /opt/atlassian/confluence/logs/conf_access_log<date>.log
Confluence Linux <confluence-install-location>/logs/conf_access_log<date>.log
Confluence Windows <confluence-install-location>\logs\conf_access_log<date>.log
nginx Debian /var/log/nginx/access.log
nginx Red Hat /var/log/nginx/access.log
nginx Windows <nginx-install-location>\logs\access.log

Finding web access logs in non-default locations

Logging can be configured to write anywhere. When logs aren’t at the default path, the config file tells you where they went.

source OS/distro Config file
Apache Debian /etc/apache2/sites-available/000-default.conf
Apache Red Hat /etc/httpd/conf/httpd.conf
Apache Windows <install-folder>\conf\httpd.conf
Apache Mac /etc/apache2/httpd.conf
IIS Windows %SystemDrive%\Windows\System32\inetsrv\config\applicationHost.config
IIS Windows %SystemDrive%\temp\appPools\<app-pool-name>\<app-pool-name>.config
Tomcat All server.xml in the Tomcat install directory
Confluence Linux /opt/confluence/conf/server.xml
Confluence Windows <confluence-install-location>\conf\server.xml
nginx Linux /etc/nginx/nginx.conf
nginx Windows <nginx-install-location>\conf\nginx.conf

A note on IIS and multiple app pools: The app pool you want is in the command line arguments of the W3WP.exe process you’re investigating. Once you have the site id from applicationHost.config, the logs for that pool sit at <log-directory>\W3SVC<id-number>. Under the hood Confluence uses a Tomcat server, so its logging config works the same way Tomcat’s does.

Windows event logs

Windows event logs can be a treasure trove of forensic information. The security event log Security.evtx is one of the most-used log files in the Expel SOC, but other log files like System.evtx and Application.evtx can sometimes be put to good use.

Security.evtx holds a lot of valuable information, but one of the most common reasons for collecting this log is to get authentication info from event IDs 4624 and 4625. Authentication events are the highest-value logs most teams collect—see what a security operations center does with them.

Log source OS version Default path What it tells you
Event logs Windows 2000, XP %SystemDrive%\WINDOWS\System32\config\ Security, system, and application events
Event logs Windows 7-11 %SystemDrive%\WINDOWS\System32\winevt\logs\ Security, system, and application events
Event logs Windows Server 2003 %SystemDrive%\WINDOWS\System32\config\ Security, system, and application events
Event logs Windows Server 2008+ %SystemDrive%\WINDOWS\System32\winevt\logs\ Security, system, and application events

Browser history files

Browser history files can be used to determine what website a malicious file was downloaded from (if it was downloaded through a browser). EDR tools and firewalls don’t always capture the URL or domain name that a file was downloaded from, but browser history is an easy way to determine where a user got a file.

Browser history files are simple SQLite databases that can be opened in free tools like DB Browser for SQLite (DB4S).

Browser OS Default path
Chrome Windows %SystemDrive%\Users\<username>\AppData\Local\Google\Chrome\User Data\Default\History
Chrome Linux /home/<username>/.config/google-chrome/Default/History
Chrome Mac /Users/<username>/Library/Application Support/Google/Chrome/Default/History
Edge Windows %SystemDrive%\Users\<username>\AppData\Local\Microsoft\Edge\User Data\Default\History
Edge Mac /Users/<username>/Library/Application Support/Microsoft Edge/Default/History
Firefox Windows %SystemDrive%\Users\<username>\AppData\Roaming\Mozilla\Firefox\Profiles\%PROFILE%.default\places.sqlite
Firefox Linux /home/<username>/.mozilla/firefox/%PROFILE%.default/places.sqlite
Firefox Mac /Users/<username>/Library/Application Support/Firefox/Profiles/%PROFILE%.default/places.sqlite
Safari Mac /Users/<username>/Library/Safari/History.db

Linux logs

Linux can seem a bit scary and complex to investigate, but when it comes to logging, it’s actually pretty simple. You don’t need any special software—all of these files can be opened in a text editor. These feed the same detection pipeline as everything else; the role SIEM plays in security operations covers how they get there.

Log source Distro Default path What it tells you
Authentication Debian /var/log/auth.log User logons; who assumed root and when
Authentication Red Hat /var/log/secure Used logons; who assumed root and when
Authentication FredBSD /var/log/secure
Syslog/messages Debian /var/log/syslog Cron jobs, services, daemons, kernel messages
Syslog/messages Red Hat /var/log/messages Cron jobs, services, daemons, kernel messages
Syslog/messages FreeBSD /var/log/messages Cron jobs, services, daemons, kernel messages
Cron Debian /var/log/cron, /var/log/syslog Scheduled jobs—a common persistence mechanism
Cron Red Hat /var/log/cron, /var/log/messages Scheduled jobs
Cron RedBSD /var/cron/log, /var/cron/olog, /var/log/messages Scheduled jobs

Cron is the main scheduling tool that attackers might use to establish persistence on a Linux system. Cron logs can seem a bit superfluous—given that cron is often logged to the syslog/messages log—but like everything in Linux, cron logging can be highly configured. If you don’t see cron logs in the syslog, then it may be worth checking the dedicated cron log.

Shell history logs

Shell history logs are one of the most valuable investigative logs when it comes to Linux systems. Shell history records user-run commands and, given how command line heavy Linux can be, it’s likely that shell history will record at least some of the actions taken by an attacker.

These files are hidden by default, so make sure you enable hidden files when searching for them.

Shell Distro Default path
Bash Debian /home/<username>/.bash_history
Bash Red Hat /home/<username>/.bash_history
ZSH Debian /home/<username>/.zsh_history
ZSH Red Hat /home/<username>/.zsh_history
TCSH FreeBSD /usr/home/<username>/.history

Getting these logs somewhere useful

Knowing where a log lives is step one. Step two is getting it somewhere you can query it during an incident—and that’s where most teams stall, because ingestion costs and detection coverage pull against each other. Whether that means tuning the SIEM you have or routing high-volume sources to cheaper storage, the goal is the same: the log you need is already collected when you go looking for it.

References

Apache logs

Tomcat logs

JBOSS logs

Confluence logs

Nginx logs

Browser history

Linux logs