A method, implemented by a processor (102, 201), for cache-based trace logging using tags in an upper cache level, the method comprising: influxing a cache line into a first cache level from a second cache level arranged as an upper cache level to the first cache level, including, based at least on the first cache level being a recording cache level, reading a tag that is stored in the second cache level and that is associated with the cache line, the tag indicating whether the cache line has been previously logged or not; based at least on reading the tag, determining whether a first value of the cache line within the second cache level has been previously logged; when the first value of the cache line is determined to have been previously logged, following a logged value logic path when influxing the cache line into the first cache level, including either storing the cache line into an entry within the first cache level without initiating logging of the first value of the cache line into the trace, or storing the cache line into an entry within the first cache level while initiating logging, into the trace, a reference to the first value of the cache line previously captured by the trace; when the first value of the cache line is determined to have not been previously logged, following a non-logged value logic path when influxing the cache line into the first cache level, including storing the cache line into an entry within the first cache level while initiating logging, into the trace, a reference to the first value of the cache line previously captured by the trace, and ensuring that the tag stored in the system memory indicates that the cache line has been logged; and evicting the cache line from the first cache level, including determining whether a second value of the cache line within the first cache level has been logged, and based at least on the first cache level being a recording cache level, performing one of: based at least on the second value of the cache line having been logged, ensuring that the tag stored in the second cache level indicates that the cache line has been logged; or ensuring that the tag stored in the second cache level indicates that the cache line has not been logged. influxing a cache line into a first cache level from a second cache level arranged as an upper cache level to the first cache level, including, based at least on the first cache level being a recording cache level, reading a tag that is stored in the second cache level and that is associated with the cache line, the tag indicating whether the cache line has been previously logged or not; based at least on reading the tag, determining whether a first value of the cache line within the second cache level has been previously logged; when the first value of the cache line is determined to have been previously logged, following a logged value logic path when influxing the cache line into the first cache level, including either storing the cache line into an entry within the first cache level without initiating logging of the first value of the cache line into the trace, or storing the cache line into an entry within the first cache level while initiating logging, into the trace, a reference to the first value of the cache line previously captured by the trace; when the first value of the cache line is determined to have not been previously logged, following a non-logged value logic path when influxing the cache line into the first cache level, including storing the cache line into an entry within the first cache level while initiating logging, into the trace, a reference to the first value of the cache line previously captured by the trace, and ensuring that the tag stored in the system memory indicates that the cache line has been logged; and evicting the cache line from the first cache level, including determining whether a second value of the cache line within the first cache level has been logged, and based at least on the first cache level being a recording cache level, performing one of: based at least on the second value of the cache line having been logged, ensuring that the tag stored in the second cache level indicates that the cache line has been logged; or ensuring that the tag stored in the second cache level indicates that the cache line has not been logged. based at least on the second value of the cache line having been logged, ensuring that the tag stored in the second cache level indicates that the cache line has been logged; or ensuring that the tag stored in the second cache level indicates that the cache line has not been logged.